Apply defaults to fields with None value at 'set' time.

If a field has a default, and you explicitly set it to None, the
behaviour before this patch was very confusing:

    class Person(Document):
        created = DateTimeField(default=datetime.datetime.utcnow)

    >>> p = Person(created=None)
    >>> p.created
    datetime.datetime(2013, 5, 30, 0, 18, 20, 242628)
    >>> p.created
    datetime.datetime(2013, 5, 30, 0, 18, 20, 995248)
    >>> p.created
    datetime.datetime(2013, 5, 30, 0, 18, 21, 370578)

It would be stored as None, and then at 'get' time, the default would be
applied. As you can see, if the default is a generator, this leads to some
crazy behaviour.

There's an argument that if I asked it to be set to None, why not respect that?
But I don't think that's how the rest of mongoengine seems to work (for
example, setting a field to None seems to mean it doesn't even get set in mongo
- as opposed to being set but with a 'null' value). Besides, as the code shows
above, you'd expect p.created to return None. So clearly, mongoengine is
already expecting None to mean 'default' where a default is available.

This bug also interacts nastily with required=True - if you're forcibly setting
the field to None, then at validation time, the None will fail validation
despite a perfectly valid default being available.

With this patch, when the field is set, the default is immediately applied.
This means any generation happens once, the getter always returns the same
value, and 'required' validation always respects the default.

Note: this breakage seems to be new since mongoengine 0.8.
Merge remote-tracking branch 'origin/pr/349' into 349
Fixed amibiguity and differing behaviour regarding field defaults (#349)

Now field defaults are king, unsetting or setting to None on a field
with a default means the default is reapplied.
Improved cascading saves write performance (#361)
Docs update
Added testcase for ListFields with just pks (#361)
Trying to fix annoying python-dateutil bug
Trying to stabalise the build
Fixed Datastructures so instances are a Document or EmbeddedDocument (#363)
Added ygbourhis to AUTHORS (#363)
apt only had an ancient version of python-dateutil *sigh*
Fixed cascading saves which weren't turned off as planned (#291)
list_indexes and compare_indexes class methods + unit tests
better comment
make sure to only search for indexes in base classes inheriting from TopLevelDocumentMetaclass
list_indexes support for multiple inheritance
Documentation updates
Merge remote-tracking branch 'origin/pr/364' into 364
Make test_indexes_and_multiple_inheritance place nice with py3.3 (#364)
Add BobDickinson to authors (#361)