Reduce the number of precompiled Keys instantiations
Previously, we precompiled just about any version of Keys that you could be expected to use. This caused the time to compile Keys to be unnecessarily long.
This reduces the compilation to types that are actually likely to be used as keys. Also removed the less likely to be used build methods.