Add KeyVersionRegistry, and read/write support on Key.

### KeyVersionRegistry
* Registry for managing the available key version implementations.
* Enables the storage system to easily create a KeyVersion.Builder for a given type.
* Also maintains the protobuf extension registry (contains all the extensions declared by the key version protos).
* Registry and its accompanying RegisteredKeyVersion class are thread-safe.

It will be used later for the security properties, which aren't in yet. I'll remove the warning suppression so it's clear.