diff: move b85diff to mdiff module

b85diff generates a binary diff, so we move this code to mdiff module
along with unidiff for text diffs. All diffing mechanisms will be in the
same place.

In an upcoming patch we will remove the responsibility to print the
index header from b85diff and move it back to patch, since it's
a patch metadata header, not part of the diff generation.
grep: remove useless while condition

A revised version of 35ba170c0f82 was sent to the list that fixed this
<http://markmail.org/message/jmfuiise5igcyh2m>, but the older version of
the patch was applied.

--HG--
branch : stable
diff: unify calls to diffline

diffline was called from trydiff for binary diffs and from unidiff
for text diffs. In this patch we unify those calls into one.

diffline is also a header, not part of diff mechanisms, so it makes
sense to remove that responsibility from the mdiff module. In
upcoming patches we will move diffline to patch module and
keep grouping responsibilities.
diff: move diffline to patch module

diffline is not part of diff computation, so it makes more sense
to place it with other header generation in patch module.

In upcoming patches we will generalize this approach for
all headers added in the patch, including the git index
header.
diff: change how quiet mode supresses diffline

Before, quiet mode produced no diffline header for mercurial as a
side effect of not populating "revs". This was a weird side effect,
and we will always need revs for git index header that will be added
in upcoming patches, so now we just check ui.quiet from diffline
directly.
diff: swap and simplify diffline args

Args order swapped, since a, b are more important than revs
(which is only used on non-git format), and change to read opts
from context.
diff: rewrite diffline

Make diffline more readable, using strings with placeholders
rather than appending to a list from many ifs that makes
difficult to understand the actual output format.
patch: make _addmodehdr a function under trydiff

addmodehdr is a header helper, same as diffline, so it doesn't
need to be a top-level function and can be nested under trydiff.

In upcoming patches we will generalize this approach for
all headers.
diff: move index header generation to patch

In an upcoming patch, we will add index information to all git diffs, not
only binary diffs, so this code needs to be moved to a more appropriate
place.

Also, since this information is used for patch headers, it makes more
sense to be in the patch module, along with other patch-related metadata.
test-pathencode: more aggressively check for python < 2.6
merge with mpm
merge with crew-stable
commit: increase perf by avoiding unnecessary filteredrevs check

When commiting to a repo with lots of history (>400000 changesets)
the filteredrevs check (added with 5c89e7fa5bc2) in changelog.py
takes a bit of time even if the filteredrevs set is empty. Skipping
the check in that case shaves 0.36 seconds off a 2.14 second commit.
A 17% gain.

--HG--
branch : stable
commit: increase perf by avoiding checks against entire repo subsets

When commiting to a repo with lots of history (>400000 changesets)
checking the results of revset.py:descendants against the subset takes
some time.  Since the subset equals the entire changelog, the check
isn't necessary.  Avoiding it in that case saves 0.1 seconds off of
a 1.78 second commit. A 6% gain.

We use the length of the subset to determine if it is the entire repo.
There is precedence for this in revset.py:stringset.

--HG--
branch : stable
Merge with crew-stable
mq: don't refer to a random name-captured repo object

Previously, we used a repo object captured at the time of monkeypatching.
eol: don't refer to a random name-captured ui object

Previously, we used a ui object captured at the time of monkeypatching.
i18n: wrap false positives for translation detection
check-code: move i18n check from warning to error
hgk: use Ttk instead of plain Tk

Use Ttk (themed Tk) for most of the widgets. Default to xpnative theme on
Windows, clam otherwise.

Provide a shim for Tk 8.4 without Tile/Ttk.