Allow variants to have parts as well

* Move all parts logic to variant
* Fix all failing test
* Display variant's parts in product show view
* Allow to add parts to variants in backend
* And refactor some messy stuff

An assembly product could include product's parts plus variant's parts, or only product's parts.