(WIP) Graded library content - Do not merge, for internal review

This is a continuation of the prototype found in #2, extended to implement [SOL-19](https://openedx.atlassian.net/browse/SOL-19) "As a student, when I complete interactive exercises displayed in a LibraryContent block in the LMS, I see a single aggregated grade for the set of exercises in the progress tab."

Testing instructions: Follow same testing steps as #2, except on step 7 when adding content to the library, add problems (of any type). On step 10, be sure to set "Scored" to True. Then, after all the other steps, view the course as a student. Check that the "Progress" tab is correct, before and after submitting answers to the problems. Test the weighting and make sure none of the children appear in the progress view - only the combined score of the LibraryContent block.

**Library screenshot**:
![graded1](https://cloud.githubusercontent.com/assets/945577/4658555/d76d2f9c-54ff-11e4-8296-3682cb11663a.png)
**LMS screenshot:**
![graded2](https://cloud.githubusercontent.com/assets/945577/4658558/d99534a4-54ff-11e4-8dad-674143cae30e.png)

I tried implementing it but it seems like a big change, and it definitely has performance implications. Normally when a 'grade' event is emitted for some XBlock, the REST API handler will instantiate that XBlock, update its cached grade, and return a success result. We would need to instantiate that XBlock *and* all ancestors, and ask each ancestor if it wants to be informed about the child's 'grade' event.