Split mongo assets cherry

Asset support in split
LMS-2876

Kind of, because really using in split requires the opaque url refactoring and CourseLocator.make_asset_key, this actually doesn't do anything with split, but it gets close.

@nasthagiri @cahrens @dianakhuang please review
How's this working. It looks backward. That is, if it has the attr, it should let the real code handle the serialization. I'm wondering if my hack in mongo.py is causing the hasattr to return True? This line is the one which must change when the opaque key 2 branch lands. For now, it should use getattr not hasattr
```
if getattr(key, 'deprecated', False):
    return key.to_deprecated_string()
else:
    return unicode(key)
```