prevent assemblies from being ordered when components are out of stock

This changes the way that total_on_hand works for assemblies, and
prevents the cart from being updated if an assembly would be made out of
stock by purchasing one of it's components in addition.
renamed assemblies_parts.count_on_hand to available_count

Change-Id: I7145dca68be5e24b30396efaabc3a835b43a805f
cleaned up quantity_by_variant

Change-Id: Ib39cd4b8f09c0bac56059ad4b3cfaf6ccab3ed34
Merge pull request #1 from Dkendal/assemblies-stock-mgmt

Assemblies stock mgmt