load local refs relative to file location.

Changes to allow $refs to be resolved relative to the location of the file containing the $ref. This involves creating an internal representation of the schema in its own class (instead of using HashWithIndifferentAccess directly). The Schema class is basically just a wrapper around the Hash that also stores the file location.

This may be dangerous if users of the library depend on the schema being a hash as not all methods are wrapped ...