loman/repo_manifest: change ElementTree.tostring return to unicode

The tostring function returns bytes by default even though its name
suggests otherwise.  Add explicit encoding=unicode option so we can
get back a proper string.

BUG=chromium:997354
TEST=`./run_tests` passes

Change-Id: Ife0b031e8927c0a0e49bc2bf8ce3c4f92a340e3f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1933554
Tested-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
diff --git a/scripts/loman.py b/scripts/loman.py
index 16e4bfe..861bbef 100644
--- a/scripts/loman.py
+++ b/scripts/loman.py
@@ -14,6 +14,8 @@
 from chromite.lib import commandline
 from chromite.lib import cros_build_lib
 from chromite.lib import git
+from chromite.lib import osutils
+from chromite.lib import repo_manifest
 
 
 class LocalManifest(object):
@@ -22,8 +24,7 @@
   @classmethod
   def FromPath(cls, path, empty_if_missing=False):
     if os.path.isfile(path):
-      with open(path) as f:
-        return cls(f.read())
+      return cls(osutils.ReadFile(path))
     elif empty_if_missing:
       cros_build_lib.Die('Manifest file, %r, not found' % path)
     return cls()
@@ -67,7 +68,8 @@
     # Fix manifest tag text and tail.
     self.nodes.text = '\n  '
     self.nodes.tail = '\n'
-    return ElementTree.tostring(self.nodes)
+    return ElementTree.tostring(
+        self.nodes, encoding=repo_manifest.TOSTRING_ENCODING)
 
   def GetProjects(self):
     return list(self.nodes.findall('project'))