Add a "now" parameter to Bucket.delay()

By adding "now" to Bucket.delay(), we can allow the method to be
run at any point in the future.  This in turn allows buckets to
be stored in Redis as a log-structured list, which in turn
removes the need to use a transaction to update the bucket
information.
Fix a docstring about "turnstile.config", which is deprecated.
Add BucketLoader

Adds the BucketLoader, which is a specialized class to reconstruct a
bucket from a list of specialized records which document how that
bucket has been altered.  This algorithm is implemented in an
__init__() because several different outputs are needed to implement
the full scalability change.  This commit also includes partial unit
tests on BucketLoader, using mock.  (Future work will convert the
entire test suite over to using mock in preference to mox.)
Centralize key encoding and decoding

Centralize the encoding and decoding of a bucket key into a single
BucketKey class.  This allows us to not only encode and decode a
bucket's key easily, but to also determine the bucket key version.
This will deprecate the Limit.key() and Limit.decode() methods.
Move the DeferLimit exception to the top of the file.
Create TimeUnit

Eliminate the get_time_unit() and get_unit_name() functions and replace
them with a TimeUnit class.  This also normalizes all the possible
exceptions to just ValueError, and ensures that a negative time unit
cannot be set.
Begin the process of reorganizing and rewriting the test suite

Pull the tests for all the new limits.py classes into a 'unit'
subdirectory.  These tests all use mock instead of the older
(and harder to use) mox.  Eventually, the full test suite will
be reimplemented in terms of mock, and unit tests will be
placed in the 'unit' subdirectory of the 'tests' directory,
allowing for the eventual addition of functional tests.
Move the Bucket and LimitMeta tests into unit.
Move Limit tests up through test_dehydrate()

This also adds a test on __repr__() and a minor change to __repr__()
to make the output deterministic.
Move and update tests on _route(), route(), decode(), and key()

Move and update the tests on _route() and route().  Also, alter
decode() and key() to be implemented in terms of BucketKey() and
move and update the corresponding tests to match.
Move format and property tests.
Alter _filter() and update tests

Update _filter() to use the new methodology for loading buckets.  Also
updates the tests, eliminating the mox-based tests for limits.py.
This brings test coverage on limits.py to 99%.
Take test coverage on limits.py to 100%

The filter() hook function does nothing, so insert a pragma to prevent
it from popping up in the coverage report.
Add the concept of postprocessors

This adds the concept of postprocessors, which run after the limits
are evaluated, but before the application is run.  Ultimately, the
preprocessor and postprocessor loading logic will be rewritten;
this is just a first cut toward that end.
Implement load() and mark decode() deprecated.
Rewrite utils.py in terms of pkg_resources

Rewrite utils.import_class() in terms of pkg_resources.  Also add a
utils.find_entrypoint() function which will be used in conjunction
with preprocessors and postprocessors in the middleware, and with
setup_limits to help simplify loading limit classes.
Corrected some updated PEP8 nits.
Fix up setup.py.
Move HeadersDict tests into unit subdirectory.
Add entrypoint search for middleware

Currently, middleware.turnstile_filter() looks up an alternative
TurnstileMiddleware class using utils.import_class(), only if a
colon exists in the name.  This change adds a search for a given
name using the utils.find_entrypoint() with an entrypoint group
of "turnstile.middleware".  Future plans entail adding an
alternative way of changing the format_delay() output, so the
'turnstile' configuration option may be deprecated in the
future.

This change also updates and moves the TestTurnstileFilter class
to the new test_middleware.py as part of the test suite update/
rewrite.