(maint) Simplify uuid? implementation, add tests.

Previously, uuid? would error when passed things that weren't UUIDs or
strings. Change the predicate to just coerce the result of converting
the argument with `->uuid` to a boolean, simplifying the implementation
and increasing safety.

Add tests to make sure that testing and converting things besides UUIDs
or Strings doesn't error.
(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.
WIP: fixing integration tests