Pull in a newer version of six and use it for metaclasses.

The version of six shipped with Django 1.5 is missing some important
compatibility primitives, like the add_metaclass decorator. I've pulled the
copy shipped with Django 1.6 into our old util/compat directory (which was
empty as of a few days ago) to use until we bump our dependency.

For now, this is used to handle the extension hook metaclasses.

Testing done:
* Ran djblets unit tests
* Ran Review Board unit tests

Reviewed at https://reviews.reviewboard.org/r/4922/
Use the more modern six library to handle urllib, cStringIO, and cPickle.

The urlparse, urllib, and urllib2 modules have been significantly reworked in
Python 3 to provide a much more consistent interface.

Additionally, the 'fast' versions of StringIO and pickle are now merged with
the 'slow' versions, so in the future we'll be able to just use io.StringIO and
pickle without the fallbacks.

'six' has some adaptations to help with this for the time being. It's not as
pretty as I would like, but it works.

Testing done:
* Ran djblets unit tests.
* Ran Review Board unit tests.

Reviewed at https://reviews.reviewboard.org/r/4924/
Remove a bunch of now-unused stuff from djblets.auth.

Some of this hasn't been used in a long time, and some of it is only unused now
that I made changes to the Review Board code to use django.contrib.auth's
versions. I'm hoping to get rid of this package entirely, but registration
still has to be dealt with.

Testing done:
* Ran djblets unit tests.
* Ran Review Board unit tests.
* Smoke tested authentication pages (log in, log out, user prefs, etc).

Reviewed at https://reviews.reviewboard.org/r/4938/
Get rid of deprecated 'xreadlines'

The xreadlines() method on file objects has been deprecated since Python 2.3.
The modern approach is to just use the file as an iterator, which will return
line-by-line text when the file is open in text mode. Trivial change.

Testing done: Ran unit tests.
Audit all strings in djblets and convert to __future__.unicode_literals

This change represents an audit of all of the strings in the djblets codebase.
Where the strings were actually binary data (specifically with our treatment of
settings.EMAIL_HOST_USER and settings.EMAIL_HOST_PASSWORD, and anything passed
into sha1() or md5()), I've made it use the 'bytes' type. Otherwise, these are
now unicode objects by virtue of importing unicode_literals from __future__.

There's also a bunch of fixes to our handling of cache keys, especially those
for large data, much more consistent. We always keep the cache key as a unicode
object and create derivative keys (like the chunk keys for large data) with
that. At the last moment, before calling cache.get() or cache.set(), we pass
that to make_cache_key, which will shorten it if necessary using md5, and then
encode to utf-8 (since not all cache backends support the unicode object as
keys).

Testing done:
* Verified my assumptions about treatment of unicode vs. str in getattr,
  hasattr, delattr, __getattr__, __hasattr__, __delattr__, hash, regular
  expressions, and memcache keys.
* Ran djblets unit tests
* Ran Review Board unit tests

Reviewed at https://reviews.reviewboard.org/r/4944/
Upload Djblets releases to Amazon S3.

We're now using Amazon S3 to store all our releases. This updates our
release script to do that. It requires our new 'fabazon' module to help
interface with S3 and perform S3 uploading and directory index
regeneration.
Merge branch 'release-0.7.x'