Even more flexibility when defining group definitions

When someone wants to define a group definition, they are now given a clone of the original model definition to work with allowing them to modify the original callback and attributes easily. This also means if they don't explicitly set a callback for the group, we're still executing the original one.