extensions: recommend against using wrapfunction for repo methods
Instead, all extensions should use the "dynamic subclass" trick:
subclass repo.__class__ and then replace repo.__class__ with your new
subclass. This avoids conflicts that happen when one extension uses
wrapfunction and another uses subclassing to extend the same method of
localrepository.
adding a
abort: username 'foo\nbar1' contains a newline
abort: username 'foo\nbar2' contains a newline
transaction abort!
rollback completed
abort: username 'foo\nbar3' contains a newline!