get $not working on mongo via $nor

 * modular-odm's "not" wasn't working on MongoDB, because their $not op
   cannot modify an equivalence like {a: "foo"}, and no $eq op is
   available.  Thankfully, they provide $nor and boolean logic dictates
   that (A $nor A) == ($not A).

 * remove comment documenting this failure from test_logical_operators
add unique fields
skip uniqueness check on null values
raise more informative errors
fix incorrectly-named query test
fix simple queries tests to match Mongo semantics

 * The Pickle and Mongo backends disagreed on how .sort(), .limit(), and
   .offset() work together.  The tests were originally written to match
   the Pickle semantics, but it has been decided that going forwards,
   the Mongo semantics will hold sway.  Summary:

   * sort(), offset(), and limit() are now setters.  Successive calls to
     a function will overwrite the previous value.  No evaluation will
     be performed by these functions.  The underlying data will only be
     updated when __iter__, __getitem__, or __len__ is called.  E.g.
     Foo.find().limit(10).limit(15) will return 15 items.

   * The constraints are always processed in the same order regardless
     of the order in which they are declared.  sort()s are run first,
     then offset(), then limit(). E.g.
     Foo.find().limit(10).offset(5).sort("_id") will sort first, then
     apply the offset, then limit the returned results to 10.
update Pickle QuerySet to use Mongo filter semantics
test_simple_queries: remove FIFO assumption, reorg

 * the tests in test_simple_queries were assuming that objects were
   being returned in the order they were inserted, i.e. there was a
   default sort order.  Many of the limit/offset tests were testing
   against an exact set of data, instead of just testing the size of the
   returned set.  The limit/offset tests without sort only test size of
   returned values now.

 * Since limit/offset/sort are evaluated lazily and always in sort,
   offset, then limit order, I've reorganized the tests.  There is one
   test for each of the three filters, one test for all three together,
   and one test for each unique tuple in the set of {l,o,s}x{l,o,s}. For
   example, the .limit().offset() test is grouped with the
   .offset().limit() test, since the expected result should be the same.
oops, we don't actually need _listIsSorted

 * since a sort filter applies before offset and limit, we can predict
   what the exact return value will be
Adds a basic write queue.
Abstracts classes keyed on external variables (e.g. current Flask request).
Moves thread-locals to LocalProxy; adds changes from @sloria's review.
Merge branch 'feature/transactions' into develop
Merge branch 'mongo-not-op' of https://github.com/felliott/modular-odm into develop
Merge branch 'develop' into tests/no-default-order
Eliminates unnecessary sorts, offset, limits; adds DirtyField utility class.
Updates travis configuration.
add elasticsearch daemon task
first pass at new elasticsearchstorage.py

 * This is essentially just a search and replace on mongostorage.py
add Elasticsearch test object