This implements a structured user group model, propagating its changes
to vanilla Django groups. It features cycle detection at save-time,
although this cycle detection can only be seen as a fallback and forms
should check the acyclicity of their changes before committing using the
provided class method.