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.
You're right! When coders start working on this platform, someone needs to give them a primer on OpaqueKeys. My lack of understanding the inheritance structure (which is quite tangled) lead to this needless code. I made the diagram below - but it didn't help:
```
(Don't use!)       (Use!)
AssetLocation <-- AssetLocator <-- BlockUsageLocator <-- BlockLocatorBase <-- Locator <-- OpaqueKey <-- object
               |                |                     |
               |                |                     -- UsageKey <-- CourseObjectMixin <-- object
               |                |                                  |- OpaqueKey <-- object
               |                |
               |                |
               |                -- AssetKey <-- CourseObjectMixin <-- object
               |                             |- OpaqueKey <-- object
               -- LocationBase <-- object
```