Added back in mirror-based serialization into branch
Fixes to make it compile with mirrors support
Clean up logging by using _log rather than print
Add better error handling to mirrors tests by registering exceptions
Support objects containing objects

The documentation for dart:mirrors is wrong, InstanceMirror.reflectee may be a
non-primative type, it can be an arbitary object.
In such cases we need to recursively transform to JSON as otherwise JSON.stringify dies later.
Here we first test if the object is of a primative type and if not we recurse.
Merge pull request #21 from ucam-cl-dtg/master

Make mirror based conversion of objects work properly