Make the threadlocal more easily garbage collected

Not fully convinced about this one yet, but the theory is that if the ThreadLocalSparkeyReader instance is kept around, the gc will never let go of the threadlocal objects after it's been closed.