Add a BlockTypeKey class to capture block types and block families.

It isn't used by the .block_type attribute of other Key types, because
those types are already unambiguous. However, it will be used as the
block_type field passed as part of ScopeIds to XBlocks and XBlockAsides.
I guess I'm asking this: When there's a BlockTypeKeyV2 (or AnyOtherKeyV2), will all BlockTypeKeyV1s continue to be created/loaded as BlockTypeKeyV1s? Or will they be created/loaded as BlockTypeKeyV2s? If V2s, has a pattern for conversion been created yet?

Just general curiosity related to our versioning - not a blocker for this PR.