Test against Python 3.4

If it works in Python 3.3, it should also work in Python 3.4.
Considering it is the latest stable release, gitdb should be tested
against it.
Convert strings to bytes for PY3

In Python 3, the default string type is now the Python 2 unicode
strings.  The unicode strings cannot be converted to a byte stream,
so we have to convert it before writing to the streams.
Use memoryview instead of buffer

This uses memoryview by default, which is supported in Python 3
and Python 2.7, but not Python 2.6, and falls back to the old
`buffer` type in Python 2.6 and when the memoryview does not
support the type, such as when mmap instaces are passed in.
Better handling of bytes

This adds a `byte_ord` version of `ord` which will let `bytes`
safely pass through in Python 3.

`cmp` was also swapped out as it has been dropped in Python 3.