New deserialization interface.

A new class template parser declares a static function that does the
actualy deserialization while the parse_* functions (generated with a
macro) are not implemented in terms of this class template and static
method. All this is wrapped in the DECLARE_PARSE and DEFINE_PARSER macros.
Tests are now working fine!
Added a couple of parse_* functions that work for ints and strings.
Added the beginning of compile-time, template-based parser-generator.
Added a new macro to aid creating deserialization procedures.

The macro specializes in parsers that already just wrapped a single function
against the Json::Value object.
Not sure where I was going witht the Generator template in parse/.
Added a new parser which uses information statically declared in a given object type.
Added some macros to help a class declare itself deserializable.
math::vector and Volume are now deserializable.
No need for a parameter of property strings.

We should just be using the passed in type, which is going to be a
supported object anyway.
Adding some code to dump arbitrary objects into json.

The templates use existing information assuming the class in question is
hooked into the deserialization/parse template code.
The Object dumper now factors in possible object children.

This is contrary to how it was originally done which was treating all
properties in the tuple as Values rather than possible Objects.
Volume now dumps json correctly.
We shouldn't be hardcoding the point_type in the Volume class.