(maint) Add type annotation to get-ancestors*
(NC-144) Implement inheritance for groups.
(NC-144) Classify route does group inheritance.

Break it out into its own section since it was getting on the long side.
(NC-145) Validate parameters w/out inheritance.
(maint) Validate resources in http test.
(maint) Move class storage fns above group ones.

Since groups depend on pretty much all the other storage functions.
(NC-145) Validate hierarchy on group change.

Whenever a new group is created or a group is updated, the subtree of
the hierarchy rooted at the group in question taking into account any
modifications by the request being serviced is validated for missing
classes or class parameters. If any are found, the action is aborted and
a structured error message is sent to the user, with both
a human-readable message and a machine-readable listing of every missing
class and parameter that includes where the error was encountered and
which group originally defined it.

Add some acceptance for this behavior that tests both the behavior and
the content of the error message.
(maint) Don't treat root group specially.

Rather than special-casing on the name of the root group in the postgres
implementation, just return empty vector for any group that is its own
parent.
(maint) fix typo in test description
(maint) Improve schema validation error messages.

Schema validation error messages share the same :kind, :msg, :details
structure as hierarchy validation.
Schema validation now happens explicitly in the liberator action
function because
  1) the error from the implementation function contains the actual
     value of the first argument to the function, which contains the
     database credentials;
  2) the error from the implemantation function has extraneous
     information.

The ->client-explanation util to transform schema explanations into
something (mostly) JSON-serializable now iteratively explains errors
until no errors remain (since sometimes error explanations themselves
contain errors).
Change the schema validation fail middleware accordingly to, rather than
register encoders for schema errors, register an encoder for java Class
objects.

Update error message tests to enforce new structure for schema
validation error messages.
(maint) Escape angle brackets in doc headers
(maint) Improve malformed JSON error messages.

The response to a malformed JSON request now shares the same structure
as the other error responses. The `:kind` key will be
"malformed-request", the `:msg` will be "The body of your request is not
valid JSON.", and the `:details` key will have an object with two
further keys:
  1) `:body` - the request's body as received.
  2) `:error` - the error message encountered when trying to parse the
     body.