Validate products in clean() instead of save()

Conceptually, save() is the wrong place for model validation. ModelForms
call clean() before saving, so the results should be the same as long as
they are used.

Fixes #1297.
Add check for product class in product validation

So far, setting a product class was apparently not enforced.

Added a test for it. Removed the creation step, because it really isn't
necessary.
Assign product_class in constructor, not clean method

And write a *real* smoke test.
Rework dashboard catalogue form to pass product_class explicitly

It's nasty to hang things on self so that multiple methods have access
to them. Better to pass them explicitly.
Merge pull request #1297 from tangentlabs/issue/1297/cleaning

Consolidate product validation