Break out course key fields into event context

Event log consumers parsing events may not have the opaque-keys library available in the execution environment they are using to analyze the tracking logs and/or may not even be python based. In order to simplify the analysis, and hopefully prevent string parsing of the identifier, we split out the various fields of the course key and store them alongside the serialized key in the context.

Reviewers: @rocha @brianhw @cpennington
That's a fair point. That said, those constants are used by the base library, so they're already part of the contract between the core library and key implementors.