Discuss: Merge ProductUpdateView and ProductCreateView

There's a lot of code duplication between the two views, which means more testing and more work for customizing. This is an attempt of merging the two.

The only difference between Django's `BaseUpdateView` and `BaseCreateView` is that `self.object` is `None` for the latter. Hence I've adapted `get_object` to return `None` if we're creating a product.

* 104 insertions, 169 deletions.
* The additional Formsets are now easily overriden.
* is_valid logic is more concise

Note: I can create and update products, and the tests run through. Given how mission-critical this is, I'd still call it experimental code. There's more optimizations that could be done (esp. abstracting away handling all the single formsets), but this was the sweet spot for effort vs. results for me.