Phase 1 of adding asset metadata saving to old Mongo

@dmitchell @cpennington Here's the first phase of my work. Look at the tests to see what is implemented and what isn't yet.
I'm of two minds about this. Generally, I don't like adding this sort of type assertions to python, but I've also more recently found it useful for refactoring.