Change an inventory unit to be removed when it's line item is removed

* This will fix the foreign key violation when a line item is removed
  in the cart.
Change address factory to reuse state before creating one
Add required attributes to required product admin form fields
Change master variant to be saved so it will raise an exception on failure

* When save does fail it was hidden previously
Only reload shipment items on item adjustment

The original issue fixed by
https://github.com/spree/spree/commit/a4b209c7288198124a735d99203102d86be6a935
only affected shipment calculations. Removing the reload for LineItems
allows them, and more important their descendants to be eager loaded.
Pass item to Adjustment#update to avoid N+1