Adds format, default and required fields in JsonSchema

This is a rather big commit which add supports for three standard
properties of JsonSchema: default will indicate the default value
of a field (if such a value was declared in the .proto file), required
indicates whether a property is required and format adds metadata
about the field, a loose equivalent to a content-type header.

The commit also introduces FormatTransformer as a way to specify
transformers that specify in which format is their output.

Also, general cleanup of Javadoc and {@inheritDoc}, @Override and
upgradeof a few Maven deps.