svn: ensure diff() and pdiff() outputs are str

diff-like operations only make sense to perform on text files, and difflib
doesn't work on bytes(), so it seems to make sense to guarantee that both
outputs are of type str().

Similar things should be done in unit tests, GitRepo, and HgRepo.
add checks in unit tests for string types in diff() and pdiff()
hg: ensure output of pdiff() and diff() is str
git: ensure output of pdiff() and diff() is str
fix few remaining usages of Popen.communicate()