DRY up models by creating a mixin to hold common fields and methods

Also adds a method to the new mixin, `clean_and_save`

After some discussion, I think calling full_clean inside of save is the
wrong way to go about things.

ModelForm validation will call the various clean methods for us already,
so calling full_clean in save will validate twice unnecessarily, leading
to extra DB calls for things like uniqueness validation.

That said, having to remember to call full_clean manually seems brittle,
so having a helper method that wraps the two together may help with this.
Automatically create group slug.