Split/add and fixes

Also, it seems like stripping the version is something that we're going to have to be able to do in general, for opaque_keys. There are a number of cases where being able to compare keys across versions is useful. Given that, it seems like we might want to promote `version_agnostic` up to the base `CourseKey` and `UsageKey` classes. Alternately, would it make sense to have separate key types for versioned and un-versioned objects?