This implement ImmutableMapTypeAdapter, ImmutableMapTypeAdapterFactory, tests and wiring (instead of the Deserializer approach).
This is more code, but is implemented for 2 reasons:
More efficient.
Handles nulls consistently (like MapTypeAdapter).