Fix some Mercurial compatibility issues on Python 3.
Review Request #10670 — Created Aug. 30, 2019 and submitted
We had a few string type discrepencies in our Mercurial support, which
impacted Python 3. The only real-world one (currently found in testing)
has to do with the parsing of commit messages in
get_raw_commit_message(), which returned a byte string instead of a
unicode string. Callers expected a unicode string, and failed when
attempting further operations on it.
This wasn't caught during development due to Mercurial unit tests being
disabled on Python 3. The reason for disabling this doesn't seem to be
valid anymore. We can certainly run the Mercurial test suite on Python 3
these days. Re-enabling this uncovered a few more string issues specific
to the unit tests, though, which have also been fixed in this change.
Mercurial unit tests pass on Python 2.7, 3.5, 3.6, and 3.7.