implement saving product with invalid category spec
move delete line item logic to model
spec delete_line_item. There is still a TODO as destroying the line item isn't spec'd properly
add an error to a product when adding with category for when the category is invalid
add TODO to comment
I have no idea
move create with product into a service class
fix product spec, and remove left over params hacking from previous commit
fix line item destroy spec
Revert whitelist_attributes config change until we can disable it everywhere correctly.
Tuck .create call inside the CreateProductWithCategoryService.

This narrows its interface and makes it easier to work with.

Note also the "renaming" of the doubles in the controller spec. This is
for compatibility with rspec-fire, which will be merged into rspec-mocks
3. By naming the double after the class it is representing, rspec can
validate that you are mocking methods that actually exist. (This isn't
enabled in this code base yet, but one day...)
Re-add transaction around product and category creation.

This is required so that if categorization creation fails, the product
insert is rolled back and not left in a half correct state.
Always use create! in preference to create! if you are not checking the
return value. create will silently ignore errors, where as the
create! will raise an error.