#16 Implemented basic object serialization, and tests
#10, #17, #18 Improved test coverage, fixed test cases and bugs revealed by tests, increased performance and improved visitors