Make embargo.tests an actual python module
Implement base class for storing OpaqueKeys.

The keys are meant to have a variety of types (which are known to the
consuming application), and a varieties of implementations of each type
(which are transparent to the consuming application).

Particular key types can specify their own required methods, but
the only global requirement of an opaque key is that be serializable
to unicode.
Add base classes for opaque keys to be used by LMS, Studio, and the modulestores
Implementation of old-style keys as OpaqueKeys (Location and course_id)
Change Locators into UsageKeys and CourseKeys
Create json encoder class to handle OpaqueKeys
with special handling of Locations and SlashSpecifiedCourseKeys
Fixed CourseKeyField validation to validate CourseKeys properly
Make LocationKeyFields validate properly
Fix all uses of UsageKeys and CourseKeys, and all of their tests.
Make Studio support opaque-keys
Fixing strangeness after rebase
Refactor roles to a new table
Fix broken views and visible wonkiness in LMS
Change improper calls to convert strings to SSCKeys
fixup! Merge pull request #3398 from edx/reference-test
Fix typo in loc_mapper_store
Fixed loc_mapper_store
Partial fix for courseware section displays
Fix wiki display
Split modulestore skip tests and tweaks