BUG-7996: Split JSONCodec into multiple implementations
Make JSONCodecFactory an abstract base class with four different
trade-offs in cpu/memory usage. The only implementation available
to clients is SharedJSONCodecFactory, which behaves exactly like
the previous implementation used to.
One user-visible change is that thread-safe implementations,
including SharedJSONCodedFactory, now keep a shared weak cache
for reuse when the same kind of factory is requested multiple times
for the same context.
Change-Id: I15342e6b4ed68ccbac9c099f63654d7456913934
Signed-off-by: Robert Varga <rovarga@cisco.com>