opaque-keys: Adds support for opaque keys

See https://github.com/edx/edx-platform/wiki/Opaque-Keys

Inspired from https://github.com/edx/edx-ora2/pull/330