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.
@dmitchell this method will be changed in follow up PRs, so I would suggest leaving it as is for now, as it works and to be changed soon. 

If you are convinced it should be done in scope of this PR, what's the recommended way for rendering templates in XBlocks than? I believe there're no other XBlocks in edx-platform repo (except for pending review Discussion XBlock), so some hints on what's allowed and what's not would be appreciated :)