scmutil: avoid using basestring and add explicit handling of unicodes
This resolves some Python 3 defects, and I don't think it is a
meaningful behavior change in Python 2.
Differential Revision: https://phab.mercurial-scm.org/D2611
tests: fix inline extension bytes in test-ssh-proto-unbundle.t
# skip-blame just b prefixes
Differential Revision: https://phab.mercurial-scm.org/D2610