Verification (`prmd verify`) with meta-schemas

After our conversation about meta schemas yesterday, I took a quick stab at implementation in Prmd. This pull takes the V4 JSON Schema, V4 JSON Hyper-schema, and "Interagent Hyper-schema" meta schemas and bundles them into a `schemas` directory in Prmd. When `prmd verify` is run, the `$schema` key is checked on the target schema, and appropriate validation is performed. [json_schema](https://github.com/brandur/json_schema) is used as the validation engine.

The one thing that we have to be careful of is that today's constraints have been moved to a new `$schema` value of `http://interagent.github.io/interagent-hyper-schema#` (URI up for debate BTW), and as such, they will not be applied to targets until those targets have updated their `$schema` accordingly. Until then they'll be validated against hyper-schema, which is much more forgiving.

The above is advantageous to non-Heroku Prmd users who would like to validate their schemas, but not to the extent of "Heroku correct".

@geemus I guess the major question here is whether you'd be willing to edit a meta schema instead of today's more programmatic code. It makes adding new constraints very easy, but admittedly isn't the easiest thing in the world to read. I'm toying with the idea of converting it to YAML so that I can add comments to it.

I've also added comparisons of pre- and post-verify output on valid and invalid schemas.

## Output

### Valid

#### Pre

```
$ prmd verify ../direwolf/docs/schema/schema.json
```

#### Post

```
$ bin/prmd verify ../direwolf/docs/schema/schema.json
```

### Invalid

#### Pre

```
$ prmd verify ../api/docs/v3/schema.json
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/definitions/identity`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/properties`
../api/docs/v3/schema.json: Missing `#/definitions/identity`
../api/docs/v3/schema.json: Missing schema/properties in `{"description"=>"Update config-vars for app. You can update existing config-vars by setting them again, and remove by setting it to `NULL`.", "href"=>"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/config-vars", "method"=>"PATCH", "rel"=>"update", "schema"=>{"additionalProperties"=>false, "description"=>"hash of config changes – update values or delete by seting it to NULL", "example"=>{"FOO"=>nil, "BAZ"=>"grault"}, "patternProperties"=>{"^\\w+$"=>{"type"=>["string", "null"]}}, "type"=>["object"]}, "title"=>"Update"}` link for ``
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/definitions/identity`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/definitions/identity`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/definitions/identity`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
../api/docs/v3/schema.json: Missing `#/id`
```

#### Post

```
$ bin/prmd verify ../api/docs/v3/schema.json
../api/docs/v3/schema.json: #/definitions/build-result/definitions: failed schema #/definitions/entity/dependencies/properties/definitions: Missing required keys "identity" in object; keys are "exit_code, line".
../api/docs/v3/schema.json: #/definitions/config-var/links/1/schema: failed schema #/definitions/link/properties/schema: Missing required keys "properties" in object; keys are "additionalProperties, description, example, patternProperties, type".
../api/docs/v3/schema.json: #/definitions/organization-app-collaborator/definitions: failed schema #/definitions/entity/dependencies/properties/definitions: Missing required keys "identity" in object; keys are "".
../api/docs/v3/schema.json: #/definitions/organization-app/definitions: failed schema #/definitions/entity/dependencies/properties/definitions: Missing required keys "identity" in object; keys are "joined, locked, personal".
../api/docs/v3/schema.json: #/definitions/rate-limit/definitions: failed schema #/definitions/entity/dependencies/properties/definitions: Missing required keys "identity" in object; keys are "remaining".
../api/docs/v3/schema.json: #: failed schema #: Missing required keys "id" in object; keys are "$schema, definitions, description, links, properties, title, type".
```