Small speedup

Use dict comprehension instead of generator expression, which avoids
creating and discarding tuples for every element, and uses a CPython
fast path. Also avoid building temporary 1-item dict just to merge it
away.
Use dict comprehension for document_as_dict() too.
Merge branch 'master' of github.com:Narrato/mongotron
Tiny bit more docs.
Add validate() hook.
Missing validate() call for DocumentField.
Add extra hooks, more uniform validation.

* This makes required field testing a part of validate().
* Adds an extra hook (which is probably wrong) to allow post-creation
  subclass initialization. Used to add required_fields-like merged set
  functionality elsewhere, although this is likely the wrong approach.