Bump version
Update 0.3 release date

While it was February 10 for me, the release happened on February 11 in Python time.
Change exception tests

`BaseException.message` was deprecated in Python 2.6. Rather than relying on it for tests, the tests now use `str(BaseException)`.
PEP8
Add ModelFactory() for testing

The test suite is full of models. Way too many. I end up adding new ones to accommodate slightly different permutations of the options without fear of screwing up an existing unit test.

The `ModelFactory()` method is being added to address this issue. Rather than declaring as many model classes as needed to satisfy all tests, a few simple ones can be created, with test-specific ones being created in the test when a small override is needed.

I probably don't need to add unit tests for a testing utility, but considering how many tests will rely on `ModelFactory()`, I'd like to make sure that it's actually creating model classes.

Closes #16
Update tests to use ModelFactory()

`ModelFactory()` is being introduced to the test suite to make model definitions easier and clearer. This should greatly improve future tests.

References #16
Always set created on new documents

`created` is being given the same treatment as `modified`. Originally the `modified` field was updated by `save()` regardless of any preexisting value. `created`, on the other hand, only updated itself when no value was present (during an insert). Now `created` will automatically be set during an insert. Just as with `modified`, if this behavior isn't desired, `auto_timestamp` should be set to `False`.

Some related comments are being updated as well.

This is also my first attempt to updating the change log in conjunction with the change itself.
Simplify test_save()

`test_save()` is, as its name implies, a test of the `save()` method. Its goal is to make sure that `save()` calls `_update()` correctly. The pieces of the test that deal with `created` and `modified` are being removed so that the test can focus on what it needs to. `created` and `modified` are being covered in `test_save_timestamps()`.
Only update timestamps on successful saves

When using `save()`, the `created` and `modified` fields can be set to new values. The fields should only be updated when the save is successful. This can be done by assigning the values to the internal document after the save.

This is made possible by catching any exception raised by `_update()` and raising it again. Why is this done? Because the assignment to the internal document happens in the try's `else` block.
Remove unnecessary trip to the database when using save_fields()

`Model._update()` uses `find_one()` to reload changed fields when performing an atomic update. With `save_fields()` this is unnecessary because the values are coming from the internal document. Unlike the other atomic update methods, `save_fields()` sets `use_internal` to `True`. Because `use_internal` indicates that the values are already in the internal document, the call to `find_one()` can be skipped.
Fix argument name for inserting document

PyMongo uses the `document` parameter when updating a document. It uses `doc_or_docs` when inserting. With the introduction of `_update()` in 0205c73 I switched to named parameters instead of positional ones and failed to use the correct name for insertions.

I need to build more integration tests.
Update release date

The 0.4 release is being done early to address a critical bug in 0.3 which was fixed in d322d53.