Constructed with a json schema, either as string or Map. Validation of
the schema itself is done on construction. Any errors in the schema
result in a FormatException being thrown.
ValidationContext is the public interface for an object keeping track of the current validation state.
A concrete instance is passed into the validation function an updated is return from the validation function.