churn: compute padding with unicode strings

Most UTF-8 aware terminals convert multibyte sequences into a single displayed
characters.  Because the first column is padded by counting bytes, the second
column is not perfectly aligned in the presence of non ASCII characters.
obsolete: fix language and grammar in module docstring
obsolete: let N denote number of obsoleted changestes in a marker

The number of obsoleted changesets is referred to as N later in the
docstring.
obsolete: fix one-element tuple in module docstring
merge: fix test failures with new merge code on OS X

The case collision checker was missing a op entry for 'k'eep.
merge: fix wrong number of arguments for bid merge message
tests: better test coverage for bid merge

Martin Geisler's test case revealed the previous message argument error.
merge: fix stray character in bid merge message
merge: tell the user when we are using bid merge

Bid merge is a new rarely used feature that the user explicitly enabled - we
should tell/warn when the user actually is using it, just like we tell when we
not are using it.

Give a message like
  note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
merge: improve notes for listing the bids for ambiguous merges
revset, i18n: add translator comment to "only"
commands: fix typo in --graph description
histedit, i18n: replace '+' with concatenation to make hggettext happy
bundle2: decorate exception raised during bundle processing

This is a small hack to help us do some graceful error handling in bundle2
without major refactoring. See embedded comment for details.
bundle2: gracefully handle abort during unbundle

Clients expect a bundle2 reply to their bundle2 submission. So we
catch the Abort error and turn it into a bundle2 containing a part
transporting the exception data. The unbundling of this reply will
raise the error again.
bundle2: make error testing more modular

We have more than Abort to test.
bundle2: use a more specific UnknownPartError when no handler is found

KeyError is very generic, we need something more specific for proper error
handling.
bundle2: catch UnknownPartError during push

We narrow the exception catching while unbundling the push reply.
bundle2: catch UnknownPartError during pull

We narrow the exception catching while pulling.
bundle2: catch UnknownPartError during local push

When doing local push, UnknownPartError from the server will be raised directly
to the client. We need to catch them too.