Add protocol buffer definitions for key version.
Removing placeholders.

- The protobufs complete the picture.
Add CR to EOF.
Add hierarchy to core proto.
Changes to add protobuf support to KeyVersions.

- Moved KeyVersionBuilder to KeyVersion.Builder
- Add methods on KeyVersion for sub-classes to override.
- Add method on Builder for sub-classes to override.
- Modified HMACKeyVersion and AESKeyVersion to conform.
Fixed core/data structure for builder.

- Was not consistent, and would not have worked without
  the proto extension registry.
Revert keySize enum change from AESKeyVersion and tests.
Expand switch statement for safety.

- Default case now catches unsupported modes.
Clone IV instead of assigning as is.

- This is standard practice for safe immutable objects.
Rename proto extension field.

- Looks better when compiled.
Comments and corrections to protos.
Throwing builder exception on invalid mode.
Merge pull request #21 from darylseah/master

Protobuf writing/reading support on KeyVersions.