(maint) Don't check for nil id in create-group.

The schema now disallows groups without IDs from being passed to
create-group, so it doesn't need to check for an ID and generate one if
necessary,
(NC-190) Group's rule field is just the condition.

Change the Group schema to make the :rule key just a RuleCondition,
rather than an entire Rule. Accordingly, enforce that Rules always have
a :group-id by making that key non-optional in the schema. Due to this
change, a couple of preconditions that checked rules for this key can be
removed.

Update all the tests to submit group rules in the new fashion.

Update the group API documentation and README group creation example
accordingly.
Merge pull request #57 from aperiodic/nc-190-rm-rule-when

(NC-190) Change group's rule field to just the condition
(maint) Use root cause for generic 500 errors.

Improve the utility of the catchall error middleware by having it use
the exception's root cause, if possible.
(maint) fix indentation in acceptance test
(NC-192) Improve group name uniqueness error msg.

When the client tries to create a group that violates a database
uniqueness constraint, return them a 409 Conflict response that explains
which fields of the group violated the uniqueness constraint, the values
of those fields, and the name of the violated constraint.

This is implemented by introducing a new exception-catching middleware,
`wrap-uniqueness-violation-explanations`, that catches a slingshot
exception thrown by `create-group*` whenever the group creation
transaction throws either:
  - a PSQLException with the postgres uniqueness_violation error code;
  - a BatchUpdateException whose root cause (the last exception in the
    chain) is the above.