(NC-188) HTTP API uses UUID as sole group key.

Rather than determining whether the group identifier passed in the URI
is a UUID or a group name, the HTTP handler assumes it's a UUID and
tries to parse it as such.

Since the ID is always present in the URI but may also be submitted in
the body, there's a new way for a group request to be malformed: if
these two IDs are different.

All the HTTP tests now pass again, however...

MOST OF THE THINGS ARE STILL BROKEN. The rules, classification, and
acceptance tests still mostly error out. If you are bisecting, you
should probably skip all commits from the first NC-188 commit up to the
merge commit.
(NC-188) Rules use group ids instead of names.

The change is basically just returning the :group-id field of the rule
instead of the :group-name (and changing the schema of apply-rule
accordingly).

LOTS OF THINGS ARE STILL BROKEN. The classification and acceptance tests
still mostly error out. If you are bisecting, you should probably skip
all commits from the first NC-188 commit up to the merge commit.
(NC-188) Fix classification tests.

The tests just had to update their test group to meet the schema.

Change the classification/matching-groups docstring to note that it
returns group ids, rather than names.

Change the local used by the classification http route from
`group-names` to `group-ids` in order to reflect this change.

LOTS OF THINGS ARE STILL BROKEN. The acceptance tests mostly error out.
If you are bisecting, you should probably skip all commits from the
first NC-188 commit up to the merge commit.
(NC-188) Return 400 on malformed parent UUIDs.

Now that the parent field is also a UUID, when a group is submitted with
a parent field and its value is not a valid UUID, return a 400 Bad
Request response, with an error message indicating that the parent field
was malformed.

ACCEPTANCE TESTS ARE STILL BROKEN. If you are bisecting, you should
probably skip all commits from the first NC-188 commit until the next
commit, where the acceptance tests get updated and everything passes
again.
(NC-188) Update acceptance tests.

Everything passes again now. Yay!
(maint) Structured 404 responses.

It was kinda weird that 404s were the only non-structured error
responses, so change that where we can.
(NC-188) Update API docs to reflect ID as pkey.