JSON::Schema::Loader

Adds a JSON::Schema::Loader object/interface that can be used to control how URLs/paths are fetched. The default behavior is the same as on master: unregistered schema references will be fetched used open-uri or File.read. The default implementation accepts initializer arguments that can be used to reject all URIs, all files, or as callbacks that will receive an `Addressable::URI` or `Pathname` object and should return `true` or `false` to indicate whether it should be requested.

I've added documentation to the README explaining how to configure the loader, either by replacing the default instance used, or supplying a loader to use for a single call to `validate`.

This addresses issues from #47, #65, #152, #173 / #174. Probably others. I didn't add any support for my `NullLoader` idea mentioned in #152; since it's a simple interface to implement, users can just define their own which returns an empty schema (`JSON::Schema.new({}, ...)`).
Could you get the "old" value of `JSON::Validator.schema_loader` on setup, then set it back again using `JSON::Validator.schema_loader=` on teardown? (Rather than using send?)