public abstract class AbstractKryoPool
Simple Pool of Kryo objects that allows a core of Kryo objects to remain
available for re-use, while requiring only a single thread access to a Kryo instance
at a time. If the pool is exhausted, then this will create new Kryo objects.
It is abstract so we can re-use the structure for a custom Spark Serializer