DO NOT MERGE: 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 like "render_type(field_type, type = SEMANTIC_TYPES[field_type.to_sym])"

but type checking and creating an 'if' block seems unpretty.