Add base classes for opaque keys to be used by LMS, Studio, and the modulestores
Add definition_key to UsageKey
Implementation of CourseLocation keys
reorder and rename args for functions in access.py
First step towards updating asset functions to use AssetKeys
Remove nearly all uses of CourseDescriptor.id_to_location
Rename get_item_errors to get_course_errors
Refactor to opaque keys
Convert *most* uses of has_item to just use a usage_key
Refactor cms create_new_course
Fix up calls to get_course to use course_ids
Make clone_course use course_ids
Rename class so less confusing
Remove get_instance (and import CourseKey where needed)
Handle old-style course ids
Make namespace separator a class variable
Clean up xmodule tests
Make Location into a UsageKey
Cleanup of get_lms_link_for_about_page
Make CourseLocator a CourseKey