Refactor Json Classes
This is a first step with no removal of existing functionality, but it makes it much easier to start removing the Json object conversions.
The main architectural change is to use a Jackson generator object to do the type conversion instead of scala type-pimping and the .toJson method.