Introduce a QuerySet class for lazier evaluation.
Extend QuerySet to use negative indices and steps.
Add delete() and get() methods to QuerySet.
Add reverse() to QuerySet.
Add earlist(), latest(), and exists() to QuerySet.
Add update(), create() methods to QuerySet, meta.
Add iterator(), first(), and last() to QuerySet.
Add EmptyQuerySet to shortcut API access.

As part of this the tests have been broken into several modules.
Add a logical & operator to QuerySet.
Explicitly create NestedResource objects.

There was an assumption previously that if the field didn't exist for a
getattr, that it was a NestedResource (so one was returned). Now a user
must create one using the 'nested' attribute.
Add locking for thread-safety.
Remove useless cache.
Cache the filter_field() on Resource.
Lock on access to Resource.auth.
Remove 'caching' setting for Resources.

This is to remove ambiguity in how Resources should be used (There
should be one-- and preferably only one --obvious way to do it).
Make use of cached resources in QuerySet slicing.
Get tests working in python3 again.
Only allow reverse() QuerySets when ordered.
Add prefetch_related() to QuerySet.
Reduce construction params to QuerySets.