Simplify Attributes::TypeV4.validate
Unnest `Attributes::*.validate` method bodies

Many/most began with a guard against the data type; this just lessens
some of the rightward drift to make them slightly more approachable and
and reduce the CodeClimate complexity score a bit.
Implement multipleOf atop divisibleBy
Derive IP{4,6} from parent IPAttribute
Reduce flog score for Validator#build_schemas
General attributes/*.rb refactor

Mostly extractions to local variables or minor unnesting.
Derive PropertiesV4 from Properties
LimitAttribute: min/max{Items,Props,Length,...}

The code in `limit.rb` is a bit insane and over-abstract now, but I'm
trying to keep the same classes in place for now so that I don't
simultaneously have to rewrite a ton of Schema::Draft1, ::Draft2 etc.
Simplify common inner-schema pattern
Derive DependenciesV4 from Dependencies
Remove unused locals and unneeded each_with_index
Simplify conditional in AdditionalItemsAttribute
Use RFC 2606 reserved invalid DNS name in tests.

This test used a DNS name which, while currently not existing, is not
actually reserved. This can manifest as a test failure on poorly
configured (like Time Warner Cable) networks. This changes said DNS
name to one using a reserved invalid top level name as specified in
RFC 2606.
Refactor ref schema URI construction.

This refactors JSON::Validator#load_ref_schema to not implement a lot
of logic that Pathname and URI are already capable of, and splits some
of it into a separate method for clarity. Some JSON::Validator class
methods are also added to hide away the specific implementation of
how already loaded schemas are kept around.

* Refactor JSON::Validator#load_schema_ref to move absolute URI
  construction to its own method, and to bail ASAP if the schema is
  already loaded.
* Add JSON::Validator#absolutize_ref_uri to handle logic around
  constructing an absolute URI to a schema based on the ref URI and
  its parent schema URI.
* Add JSON::Validator.schema_for_uri to fetch an already loaded schema
  for a given URI.
* Add JSON::Validator.schema_loaded? predicate method for testing
  whether a schema is already loaded.
* Move some existing code to use the new class methods.
Merge pull request #176 from gabrielg/master

Use RFC 2606 reserved invalid DNS name in tests.
Merge pull request #177 from gabrielg/refactor-ref-schema-uri-construction

Refactor ref schema URI construction.
Merge pull request #172 from pd/better-climate

General cleanup, mostly focused on attributes/*
Only stringify schema once
Using `anyOf` shouldn’t fill JSON object with defaults of non-matching subschemas

Prior to this change, a JSON object validating against `anyOf` would be mutated by each subschema with default values, even if that subschema then failed validation. These new properties would then be present in the JSON for validation against subsequent subschemas.

Now, on subschema validation failure we set the JSON data back to the original data. So only the defaults of the first matching subschema persist after returning from the call to `validate`.
Using `oneOf` shouldn’t fill JSON object with defaults of non-matching subschemas

Prior to this change, a JSON object validating against `oneOf` would be mutated by each subschema with default values, even if that subschema then failed validation. These new properties would then be present in the JSON for validation against subsequent subschemas.

Now, on success, only the single passing subschema will mutate the JSON data.