Support $refs.

Note that we now have two ways of linking validators together:
SchemaSetters and NeighborCheckers.

SchemaSetters are still the same. They don't have direct access to
neighboring validators, but have to unmarshal them from
map[string]json.RawMessage. This has advantages in that there's no need
for, e.g. an 'exclusiveMaximum' validator because 'exclusiveMaximum' can
just be unmarshaled by 'maximum'.

This doesn't work for neighboring validators that can contain embedded
schemas though, because those always have to have their own nodes for
purposes of resolving $refs. Validators implement NeighborChecker to get
access to these nodes directly, e.g. for 'items' to get access to the
schemas embedded in 'additionalItems'. Because the embedded schemas of
'additionalItems' are linked to directly, if they're changed by the $ref
resolver 'items' will also have access to those changes.

SchemaSetters can be deprecated in favor of NeighborCheckers, though
that would mean adding independent validators (along with dummy
validation methods) for keywords like 'exclusiveMaximum'.