Added abstract base class for Product.

Defining the manager on an abstract base class means subclasses will
inherit it instead of having to explicitly define their own.