Added Product Pack
Added Product Pack

* This PR adds the Product Pack entity
    * Entity + Interface + ORM Mapping Information
    * Associated basic services (Factory, Repository, ObjectManager, Director)

* This PR has led to refactor part of the code, introducing a small BC Break (explained here)
    * Some cart services were managing the stock processes for Purchasable entries
    * Because PackInterface is as well a PurchasableInterface, adding new logic meant to change
      as well these Cart services. Bad idea
    * Some services have been created in Product, designed to solve these problems
        - Purchasable name resolvers
        - Stock validation
        - Stock update
    * Using tags, we can split to different services (implementing interfaces) all PurchasableInterface
      implementations, collecting them all in a main service for each purpose.
    * We have changed the construction for 2 services, but I really think we should now bring construct
      method BC (composition over inheritance)

* These features have been developed using a strict TDD philosophy (first tests, then implementation)

elcodi/CoreBundle