model: fix saving with a compound key

MongoEngine was generating a new ObjectId when saving the original
object which was preventing the versioned document saving correctly in
the database.
model: fix up ME base classes, target ME 0.8

After investigation it was apparent that we didn't need to create our
own metaclass and could reuse the TopLevelDocumentMetaClass for our
bases. Doing this ensured that ME would use the correct collection name
for the child classes.

This also fixes an issue when saving a document where the object
wouldn't be saved because self._created was False.
Merge pull request #1 from damoxc/master

model: fix saving with a compound key