Everyone uses inject in Ruby
Use hierarchical URLs for groups

We use the numerical ID for most of the CRUD operations, and redirect
show with numeric ID to show with the path.

You can put almost anything you like in an id in Rails *except a slash*:
they always get escaped, and if they didn't then the edit link wouldn't
work. So anything that uses a slashed route needs to be hand-crafted,
and we can't use any of the normal methods (link_to etc.).

This isn't entirely satisfactory, but it's the most straightforward and
minimally invasive solution, I think. It avoids either having to store
and update the full hierarchy on each group or having to walk the full
hierarchy every time a link is generated.

Slugs are now scoped by parent, and rely on the uniqueness constraint on
the name for their own uniqueness. If this migration fails, that
indicates multiple groups at the same level with the same parent; such
data must be sorted out first.
Remove methods we're not using

We can add them back later if we need them.