Abstract away some types

Review Request #4907 — Created Nov. 5, 2013 and submitted — Latest diff uploaded

Information

Review Board
master

Reviewers

Abstract away some types

String and integer types have changed in python 3. In 2.x, the str type is a
string of bytes, and the unicode type is a string of text. In 3.x, the
bytes type has replaced the old str, and str has replaced unicode. The
six library has abstractions for these that we can use while we're trying to
support both.

Additionally, 3.x has merged the int and long types, so there's a similar
abstraction for that.

There's still a lot of more complicated stuff to do with how we handle strings,
because of the changes to string literals. The stuff where we handle encoding
for diffs will require some special attention, I think.

Ran unit tests.