Hale serializer meeting Crichton functionality

This is an early commit for the new Hale serializer.  Released for comment.  It's here for feedback, but I am well aware that it needs substantial code cleanup.
I tend to write private methods as stateless parameterized functions.  It's my usual pattern.  Are you suggesting these either need to be class methods, or I need to change the parameters to object attributes and reference them there?  Cause, that seems bad.