(NC-156) Add utilities for making map deltas.

The deltas represent the difference between two maps according to the
semantics of merge-and-clean, so they can be applied to the first map
using merge-and-clean in order to produce the second map.

This is used to implement the group-delta function, which is almost
identical but ensures the output always has a name, making it a valid
GroupDelta.
(NC-156) No 500 when PUTting an existing resource.

This involves overriding liberator's `put-to-existing?` decision to
return false in the case where the client is putting to an existing
resource that is equal (modulo id) to the resource submitted with the
put. This way we avoid doing the `put!` and just return a 200 with the
resource.
(maint) Describe `rule` key of group creation reqs

Apparently I forgot to add it to that section of the documentation when
I was updating it as part of moving rules inside of groups.