WIP - Content libraries settings overrides

Changes split mongo behaviour so that XBlock fields with Scope.settings can have their `default` overriden in the definition. This adds a new `defaults` object to definitions in split mongo.

Notes:
* This approach works well with the studio UI. When overriding a library content child within a course context, you can tell if an override is set or not, and pressing the "reset" button resets back to the library value, not the normal XBlock value.
* Not quite done - currently for libraries it *saves* Scope.settings fields to defaults but it loads them back as defaults and not as normal values when editing within the library. This could cause minor bugs in some circumstances and will be fixed. See xmodule/modulestore/split_mongo/split.py:1737
* What's the purpose of split's `persist_xblock_dag` and `_persist_subdag` methods? They are only used in a couple tests as far as I can tell, yet they are not in a `tests` module... I didn't update them to be compatible with this feature.

One potential problem is that the definitions are often lazy-loaded, so in order to check if the default is set or not, we sometimes now need to load the definition when in the past it wasn't loaded. This was causing some platform tests to fail because more mongo calls are used than before. Possible solutions:
* Set a `has_defaults` flag on the structure - this is what I have done for now
* Avoid/reduce lazy loading
* Change code to only check for defaults if block is a descendant of a LibraryContentBlock
* Don't allow XBlock fields to be overridden in this way - use some other approach