exchangepull: fixup for introduction of transaction manager upstream

Mercurial rev 52db731b964d introduced a transaction manager upstream. This
means that the closetransaction and releasetransaction methods on the pull
operation have gone away.
util: add missing mercurial.util import
git_handler.get_files_changed: detect renames when asked to do so

We use Dulwich's rename detector to detect any renames over the specified
similarity threshold.

This isn't fully bidirectional yet -- when the commit is exported to Git
the hashes will no longer be the same. That's why that isn't tested here. In
upcoming patches we'll make sure it's bidirectional and will add the
corresponding tests.
git_handler: mark source for rename info as Git or Mercurial

See inline comments for why the additional metadata needs to be stored.

This literally breaks all the hashes because of the additional metadata. The
changing of hashes is unfortunate but necessary to preserve bidirectionality.

While this could be broken up into multiple commits, there was no way to do
that while preserving bidirectionality. Following the principle that every
intermediate commit must result in a correct state, I decided to combine the
commits.
git2hg: update comment now that presence of hg fields is no longer a heuristic

In a previous commit we started storing metadata in Git whenever commits
originated in Mercurial, so this is no longer a heuristic.
readme: add docs for rename detection options