Modulestore Support for Content libraries (Part of SOL-1, SOL-2, SOL-3)

@cpennington @dmitchell @doctoryes @antoviaque @explorerleslie @cahrens

**Background**: This is the technical foundation required for [Content Libraries](https://openedx.atlassian.net/wiki/display/SOL/Content+Libraries). It is considered part of SOL-1, SOL-2, and SOL-3, with the corresponding UI changes separated out into #6046.

**Discussion**: Architecture discussed extensively on [the wiki](https://openedx.atlassian.net/wiki/display/SOL/Content+Libraries) and in meetings, then the revised proposal was presented to the [Arch Council](https://openedx.atlassian.net/wiki/display/AC/Architecture+Council) on Oct. 21 and given thumbs up.

**Partner information**: 3rd party-hosted open edX instance, for an edX solutions client.

**Merge deadline**: ASAP - several other PRs are ready and blocking on this.

**Dependencies**: Requires edx/opaque-keys#46, which is already merged.
@cpennington Good news: I converted it to an XBlock and it seems to work well: 3b14337593e827463c7be702f47a36b5875eb78d

Two questions for you:
* I left it in the `xmodule` folder and tweaked xmodule's `setup.py` as you can see in the commit - is this good, or is there some other place that new core XBlocks should go?
* The new XBlock has no JavaScript (never calls `initialize_js`) and is a pure XBlock, so when I view the library in studio, the `initializeBlock` coffeescript code logs an error to the JS console saying its DIV `is missing data-runtime, data-runtime-version or data-init, and can't be initialized`. This doesn't cause any problems, but creates a very long trace in the console as the entire HTML of the XBlock is logged with that error. Can I remove that `console.log` warning, or is there something I need to change/implement in the new XBlock?