Optimized lookup table for accessing two types of serializers; typed
and non-typed. Only accessed from a single thread, so no synchronization
needed for accessors.
Actual mappings from type key to serializers
We'll reuse key class to avoid unnecessary instantiations; since
this is not shared between threads, we can just reuse single
Factory method for creating the "blueprint" lookup map. Such map
can not be used as is but just shared: to get an actual usable
has to be called first.