Bump version
Clean up

This whitespace is being removed because while it would be necessary for PEP8 compliance, this is a very simple example in the README and only results in making it less visually appealing.
Typo
Typo
Move Meta class to separate module

The `Meta` options class is being moved to a separate `meta` module. The decision to do this was made while refactoring `test_meta.py`. I was attempting to clean up the tests and decided that I should target the `Meta` class with many of the tests. Any of the tests related to `ModelMetaClass` are being moved in `test_base.py`.

I feel like I should explain this better, but it has been a long day and I'm just happy to have gotten all the tests in order.

An important thing to note: `TestModelMetaClass.test_subclassed()` was failing on the `collection` option with the classes defined directly in the method. It was also failing with `ModelFactory()`. The test only passes with the classes defined the proper way and at the module level. Because this is how `Model` classes should be used, I'm okay with this.
Update tests for Meta class with proper write concern option

In order to fully deprecate the `safe` option when Simon is used with `MongoClient`, the `Meta` options class needs to set the `w` option instead of the `safe` option. When `safe` is defined, a `DeprecationWarning` should be triggered. These changes to the `TestMeta` should all pass once the necessary changes have been made to `Meta`.

At this point in time, tests should be failing.

References #17
Typo
Change Meta class to use write_concern instead of safe or w

This change handles storing a model's default write concern value as `write_concern`. It was originally handled as `safe`. The attribute is needed when calling `delete()`, `insert()`, or `update()`. Having to manage multiple attribute names would get messy. Taking care of it in `Meta` makes it much easier.

Part of this change is adjusting `ModelFactory()` to work with `write_concern` instead of `safe`. In addition, `ModelFactory()` is being updated to hopefully better handle things like what I saw in 68fc36d.

References #17
Move subclass test models into method

Thanks to 9f1c255, the classes for `test_subclassed()` can now be created in the method using `ModelFactory()`.
Update documentation to include w

With the introduction of the `w` option to the `Meta` options class, models should be defined with it instead of `safe`.

References #17
Add option labels in documentation

Labels are being added to the meta options documentation so that other documents can easily reference them. The deprecation message for the `safe` option is being updated to include a reference to `w`.
Remove unused import

The `warnings` module was added to the `test_meta` module as part of 65dbad1.
It had been added in preparation for `Meta` triggering `DeprecationWarning`. It
will be needed later to properly test for the warning, but it's being removed
for now because it isn't used by anything yet.
Deprecate safe meta option

As part of changing from `safe` to `w` with `MongoClient`, the `Meta` class
will now fire a `DeprecationWarning` when `safe` is included in a `Model`
class's `Meta` class.

Versions of PyMongo prior to `MongoClient` (2.3 or older) will not see the
`DeprecationWarning`.

References #17
Pay not attention to the man behind the curtain

This test makes sure that the `Meta` options class triggers a
`DeprecationWarning` for versions of PyMongo with `MongoClient`. Unfortunately
the warning seems to be triggered by another test first, and so
`warnings.catch_warnings()` is unable to catch the warning during
`TestMeta.test_safe_deprecationwarning()`. As a (hopefully temporary)
workaround to this, Mock is being used to mock the warnings module to ensure
the correct warning is being triggered.

References #17
PEP8
Deprecate safe argument for Model methods

As part of changing from `safe` to `w` with `MongoClient`, all methods of the
`Model` class that update the database now support `w` as an argument. If any
of these methods are called with `safe`, a `DeprecationWarning` will be
triggered.

In order to accomplish these, `safe` had to be removed from the method
signatures and both `w` and `safe` are being handled through the method's
**kwargs (sometimes called **fields).

Tests are being added for the `_set_write_concern_as_safe()` and
`_set_write_concern_as_w()` methods since the latter is what actually triggers
the warning.

Versions of PyMongo prior to `MongoClient` (2.3 or older) will not see the
`DeprecationWarning`.

Closes #17
Update write concern documentation

The docs failed to keep up with the changes to the way Simon handles write
concern. This changes should bring it back in step with the code.

References #17
Change map_fields() to take a dictionary mapping instead of a Model

`utils.map_fields()` was written with the `field_map` meta option in mind. Its
first argument was the `Model` class whose map needed to be applied. The
function's signature is being changed to take a `dict` as its first argument
instead. This will allow `map_fields()` to be used at times when there is no
`Model` available.

This change came about when I began to implement a new meta option called
`typed_fields`. It will allow for fields to be restricted to the  specified
types. In order to not have to map fields every time `typed_fields`  is
checked, I want to do the map as part of `Meta.add_to_original()`. While the
`Model` is available in that method, it feels more appropriate here to pass
just the mapping instead of the class.

References #18
Add typed_fields meta option

This is the first draft of adding a `typed_fields` option to the `Meta` class.
By default `_id` is typed as `ObjectId`. Tests are being added to check that
`Meta.add_to_original()` is handling the attribute correctly.

It currently doesn't actually do anything since `Model` has not yet been made
aware of it.

References #18
Properly add _id to typed_fields

I was considering treating the `typed_fields` meta option as a tuple of types,
but in the end decided against it. This fixes the last part of that idea that
wasn't removed.

References #18