Bump version
Switch DeprecationWarning tests to use warnings context

I wasn't happy with `warnings.simplefilter('default')`. There were warnings being printed to stdout that wouldn't have been there if I weren't mucking about with `warnings`. The `catch_warnings()` context manager will restore the state of `warnings` when the context is exied.

By making this change, I can remove `TestBase.tearDown()` since it is no longer needed to reset `warnings`.
Remove a print from the tests

It was inadvertently committed in 88d662a (written while working on 0516f76) while I was trying to get `__str__()` to work with `ModelFactory()`.
Add integration tests for models

These integration tests require a database connection, but will hopefully prevent bugs like the one fixed in d322d53 from popping up again.
Add integration tests to Travis CI

Originally I liked that Travis didn't have to run the integration tests, but now that there are more of them, I feel it's important.
Move testing Object ID to utils

`AN_OBJECT_ID` and `AN_OBJECT_ID_STR` are used across a few of the test modules. Placing them in `utils` allows for easier reuse if they are ever needed in new places or changed.
Add docstrings

`_set_write_concern_as_safe()` and `_set_write_concern_as_w()` are marked as internal methods, so I originally gave them no docstring. Now they at least give some hint of what they do.
Make classifiers a list

PyPi doesn't seem to like when you use tuples
Make integration tests clean up

The integration database should be dropped after the tests are done.
Add $elemMatch operator

At this point, support is basic. The argument ending with `__elemMatch` takes its query as a dictionary. Any fields used in the dictionary must already be mapped and all operators must already be included.

Eventually I'd like this to feel Pythonic. That could come in the form of supporting `elem_match` in argument names or a method that supports using keyword arguments to construct the query dictionary.

Closes #1
Replace iteritems() with items()

The use of `items()` instead of `iteritems()` was brought up in 350a6fa. It looks like I have been doing a good job of keeping up with the plan.
Add a method to perform rename operations

This new `rename()` method can be used to perform atomic renames on the fields of an instance. It will perform the update and reload the changed fields.

Closes #9
Clean up
Add a method to perform push operations

This new `push()` method can be used to perform atomic `$push` and `$pushAll`operations on the fields of an instance. It will perform the update and reload the changed fields.

Closes #10
PEP8
Add a comment

This comment explains why the end result of `push()` is being checked.
Add a method to perform pull operations

This new `pull()` method can be used to perform atomic `$pull` and `$pullAll`operations on the fields of an instance. It will perform the update and reload the changed fields.

Along with these change, the wording in a comment inside `push()` is being updated to better express that the `defaultdict` behavior is not unique to it, as `pull()` also uses it.

Closes #14
Closes #15
Add additional tests for push() and pull()

These tests operate directly on the `_update()` method and make sure the fields are being updated.

References #10
References #11
References #14
References #15
Update push() to support $addToSet

The `allow_duplicates` argument is being added to `Model.push()`. It causes `push()` to use the `$addToSet` operator instead of `$push`. Through the use of the `$each` operator, `$addToSet` will also be used instead of `$pushAll`.

Closes #12
Update return values for mock Find_one() calls

While most of the tests don't care that mock `find_one()` returns the exact same document the real `find_one()` would, it's important that it does. This means that `_id` should always be included in the document. Even though `_update()` will pop it, it's better to make that happen explicitly. If there is ever a change to `_update()` that affects its interaction with `find_one()`, I want as many tests as possible to break.

This also means that nested values within the document should be handled correctly. The real `find_one()` would return these as nested dictionaries, not use the dot notation.