Move Serializer into own file, add util for parsing mutlidelim strings

the __init__ function was getting pretty lengthy, and with the
upcoming logic for deserialization improvements, Serializer is
likely going to increase in length.  I may try to find a way to
refactor how serialization metadata is indexed, and refactor some of
the common per-attribute processing so that there's less duplication.