Refactor Json

Ran down a side-path and refactored the json generation code.  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.

Unit tests aren't rewritten, but I wanted to put this up to get feedback before pursuing further.

If this looks good, the next step is to start removing JsonXXX objects and to make the actual classes convert natively.