Add support for the "additionalProperties" field.

When decoding an object, if no key matches and the schema has an
"additionalProperties" field, we keep a separate std::map from
std::string (the key) to the given type.

An iterator per schema/child schema is added to the *Callback struct.
This is used to track which key-value pair was just added to the
std::map, so a different function (e.g. OnNumber) can fill in the parsed
value.
Support more complex "additionalProperties" types.