client: allow send_pack callers to override how packs are emitted

Sometimes, a client will already have a pack computed for the
(have, want) negotiated with the server. Rather than re-compute the
pack each time, we could instead allow the send_pack caller to handle
writing pack data themselves.

This patch leaves much of the send_pack structure intact by using
write_pack_objects as the default write strategy.
Remove setuptools 2to3 hook.
Port the minimal needed to get the test suite to run in python3.
Support reading packs from io.BytesIO

(io.BytesIO rasises a io.UnsupportedOperation when calling it's .fileno() method)
Skip tests in python3 that fail (most of them :-()
Enable testing python3.4 on travis.
Make a note in README that the Python3 port is ongoing.