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.