[Ch7] Add Product to domain model with an interface for the Repository pattern