Checkpoint of Python 3 port. Over 800 of the 897 unit tests are passing.

Thanks to Martin v. Loewis for having done some of the initial lifting
for a DZUG talk. I used a lot of his changes from this diff:

http://www.dcl.hpi.uni-potsdam.de/home/loewis/zodb/ZODB.diff

Applied all changes manually to make sure I do understand them and that
they are correct.

As always 90% of the work is to catch all places where we want to deal
with bytes instead of strings.
Addressed all of Marius' comments from the previous checkin.
Fixed up as many unit tests as I could. There are between 13-16
failures left.
Give up on an argument lost 10 years ago.
Add __le__ and __ge__
Okay, the test failures are now down to 19/1379. The left-over errors are
largely due to:

* Different pickle size in Python
  (even for protocol 1, where new padding is added as far as I can tell.)

* Weak references do not seem to work correctly.

* When all tests are run, committing transactions fails. Probably some
  tests are not cleaning up enough after themselves.

The biggest issue remaining at this point is the fork of Python 3.3's
pickle to properly load Python 2 binary strings and adding back
``noload()`` to the unpickler.
Do not rely on a checkout of zdaemon anymore.
Fix Py3k namnyism: 'assert_' -> 'assertTrue'.
Fix Py3k namnyisms: 'fail{If,Unless}' -> 'assert{False,True}'.
Fix Py3k namnyisms: 'assertEquals' -> 'assertEqual'.
Fix gc_blob_removes_uncommitted_data

Apparently the with statement leaves a local variable pointing to the
BlobFile object, which holds a reference to the blog and prevents it
from being garbage collected.
WIP: Python3-ify fstest.py

Next: the hexify() function needs to handle bytestrings on Py3 and
regular strings on Py2.
Fix fstest tests on Python 3
Fix blob_layout.txt failures on Python 2.7
Unify doctest indentation
Use the testXXX convention for test names
Consistently name doctest holder functions

(To distinguish them from real functions that actually do something when
called.)
Typo fixes
Fix doctest_readCurrent

It seems that OIDs are assigned in random order (dictionary iteration
order perhaps), and the test made assumptions.  Add an extra
transaction.commit() between object addition to fix OID assignment
order.
Fix test_weakrefs_functional

In Python 3 object.__hash__ raises TypeError, so we need an explicit
override if we want hashability.