Convert to simpler Gson JSON serialiation.

No more constructors that accept a values map - need to handle extra
values separately.
Switch diag abstraction around to use DiagnosticMessage parent. Thanks, Charles, you were right!