Course keys use key introspection

@brianhw, @watsonemily, @srpearce, and @stroilova, please review.
Question: is there an impact on CommentThread.commentable_id for
discussion threads?
Hmm.  This is technically correct, but I'm concerned in the long run there will be content versions which will be appended to the end of various identifiers.  Also, the block "type" already has a "type" component, so I wonder if the use of "type" here ought to be qualified.  Perhaps "id-type"?  And then not mention the version number as part of this type, because in some ways a new versoin of an "id-type" is just a different id type.