(WIP) Randomized selection from content libraries - Do not merge, for internal review

This is a continuation of the prototype found in #1, extended to implement [SOL-18](https://openedx.atlassian.net/browse/SOL-18) "As a content author, I am able to select a number of random content blocks that would be displayed in a LibraryContent block."

Testing instructions:

1. Check out this branch on a vanilla devstack (not solutions), and do `paver install_python_prereqs` and `paver update_db`
2. As 'edxapp' user, edit `~/cms.env.json` and add `"ENABLE_CONTENT_LIBRARIES": true` to the `FEATURES` object.
3. Edit `~/cms.auth.json`. Go to `MODULESTORE` > `default` > `OPTIONS` > `stores` - it should contain two or three entries. Re-order the entries so that the store with `"NAME": "split",` comes first in the `stores` list. (This makes [split](https://github.com/edx/edx-platform/wiki/Split:-the-versioning,-structure-saving-DAO) the default modulestore for any new courses.)
4. Start `paver devstack studio` and go to `localhost:8001` in your browser.
5. Log in as staff, and create a new course.
6. Edit the new course in studio. Go to Content > Content Library. Click the link to create the library, then go back and refresh the page to see the new library.
7. Add some content to the library. (Graded problems not tested at this point - stick to content like HTML blocks rather than problems).
8. Go to Settings > Advanced Settings and add `"library_content"` to advanced_modules.
9. Go to Content > Outline. Create a new section and subsection, then edit it. Click "Advanced" and add a new "library_content" block.
10. Once the block is added, click "Edit" to edit its settings. Most are explained on the settings editor. For the "Library" setting, you must click "Add", then paste the CourseLocator of your library. This looks like `course-v1:ProblemX+PR0B+2014+branch@library`. (It's in the URL when you go to Content > Content Library, though the URL may not show the `+branch@library` part, so make sure to add that). Hit Save.
11. Click "Update now with latest components from the library".
12. Optional: Click "View >" to preview all the blocks found in the library.
13. Hit "Publish", then start up the LMS and go to `localhost:8000`. Browse into the course, and you should see that the block is replaced by random blocks from the library. To test the randomization, click the lowest "STAFF DEBUG INFO" link underneath the module, then click "Delete Student State", then refresh the page.
That means that all previous state info will be lost, right? This is a different behavior than what instructors are used to I think - when they edit a block within the courseware after students have started answering, it would keep the existing student values even if the content fields are changed. It's usually advised against editing live content from a course once students have access to it, so not sure how much we need to care about this, but might be worth thinking about it -- it might be a tough limitation to clear out user answers to fix a typo in an exercise question.