tree based deserialization
serialization can also be changed to use the tree internally
closes #1
Merge pull request #2 from teamsnap/new_internals

New internals