Add parts in variants

* 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.