JDK6 runtime support for json

Warning: the backported try-with-resources are not pretty
I'm going to refine exception handling in marshalers, so there will be only `IOException` thrown out, which will be any parsing unmarshaling problem plus wrap any runtime exception throws during immutable object construction. Need to return to these handlers to ensure consistency.

(I leave this as a reminder, I will merge as is and then will return to these lines)