PEP8
Full rewrite of the _meta attribute

This one's a doozy!

I started writing the docs the other day and while showing how easy it is to declare a model, I decided that it was more work than it had to be because a `collection` name was required for each subclass of `Model`. I decided to change the behavior of `ModelMetaClass.__new__()` to generate a `collection` name from the model's name instead of raising `AttributeError`.

I then proceeded to rewrite `TestMetaClass.test_collection_none()`. The version of it being added here is what I came up with. This failed. `testmodels` was assigned to both models.

It turns out the way I attached `_meta` to the model also assigned values to `Model._meta`, overwriting what was added by the previous model created.

At this point I decided to rethink my entire approach. Borrowing heavily from Django's approach, `ModelMetaClass.__new__()` is being reworked and the `Meta` class is being born.

In addition to this, a slew of new tests are being added to better test the functionality behind `_meta`.

Two notes on compatibility with prior revisions.
1. While `collection` name being generated instead of `AttributeError` being raised shouldn't affect anyone, it is something to be aware of.
2. Unknown attributes attached to a model's `Meta` class no longer get passed through to `_meta`. They are dropped.
Add another test for collection name generation

Thanks to `coverage` I noticed that there was no test for when a model included a `Meta` class that did not contain a `collection` name. This addition to `TestMetaClass.test_collection_none()` adds that.