Added SKU for Product
Added Trait for price members in a Product
Fixed circular interface between Product and ProductPrice
WIP: Variant product override
Merged Variant with Product bundle
Added Purchasable and Purchasableresolverinterface

A Purchasable is an object that:

 * Has a SKU (Stock Keeping Unit) code
 * Has stock attribute, reporting the purchasable availability.
 * Implements ProductPriceInterface, so that prices can be read and written

Using this consistent interface, services and classes that operate on
these features (such as CartManager) will have a shallow dependency
with product classes or interfaces

A purchasable resolver allows an object in the AbstracLine
class hierarchy to specify the concrete logic to recognize
the actual type of a purchasable and to act on the AbstractLine
accordingly.
Added test for Variant in CartManager
Fixed mapping for unidirectional ManyToMany association
Normalized cascade attribute in yml mapping
Added ProductInterface::addVariant()
Enforced policy on Variant::addOption

Variant::adOption can only be invoked if the Variant has been associated
with a parent Product. When this condition is not met, a LogicException
is thrown.
This helps keeping synchronized the options of a Variant with its parent
Product attributes.
Added OnDelete=CASCADE to Variant::product relation
Fixed incorrect Money::create factory
Added product twig extension
Returned option collection cannot contain duplicates
Added delete=cascade to ManyToMany association Product-Attribute