TabularDataSupport

Adding TabularDataSupport for both text and json message formatters.

Introduced new 'format' of cjson (compact json)  TabularData is often Map<String, Object>.  When translating to JSON, I find it much more natural to treat TabularData of this form as a simple JSON object.  If the TabularData has multiple keys, then it needs to be translated as JSON array of JSON objects.

When in cjson, we perform the above optimization for simple tables.  When in regular json, we do not.

The reason we want to give the user the choice is because cjson won't be backwards-compatible if an TD started with one key and later added multiple.