Changed Marshal to be an extension method

All serializable objects now have Pack and PackedSize methods. The
Marshal() extension method simply uses these.
Implemented methods