Generic CBVs in CRM

In an effort to clean up the code and decrease what we need to test, I changed a bunch of CRM views into generic class-based views. This includes a few handy CBV mixins.

I left out the list views because I have a class-based search view in another branch that could use some testing.