1206: Add groups for signin system
We need to generate lists of cards for the signin system with the cardholders divided into groups, to allow us to run reports that are restricted to the activity of particular groups. The immediate use case is for picking out signins/signouts for the cleaners so that their hours can be worked out without separate record keeping.
A person can only be in one group for a 'site' (strictly speaking, it's not the person but the mifare number on their card that can only be in one group). However if we got other 'sites' in future then we might need overlapping groups, so I've set the person-group relation up as a many-many and added a constraint to keep it to one group per person. In future groups could gain a 'site' property, and the constraints adjusted to be one group per site per person.
A Hotwire view and an apps view are provided to expose the data to humans and the webapp that generates the lists.
Closes #60 (closed)