New locators for content libraries

This PR implements two new types of locators necessary to facilitate content libraries. I'll be posting a separate PR to edx-platform for the content libraries prototype soon, but for now I'd like to start the review process for this locator code.

The new locators are described in detail under the "New Locators" heading at https://openedx.atlassian.net/wiki/display/SOL/Content+Libraries

Not clear on what you're asking... `BlockUsageLocator._to_string` calls this method to generate the first part of its own string, then appends block type/id to the result. (This method is part of `LibraryLocator` (not `LibraryUsageLocator`) and it must be implemented because `LibraryLocator` does not inherit from either `CourseLocator` nor `BlockUsageLocator` - only `CourseKey` and `BlockLocatorBase`.)