Either serialization module

This is a replacement for pull request #163 
Serializer and Deserializers now support types and contained types.
Contain tests for types and contained types.