- pep8 cleanup
- explicit imports
- pep8 cleanup
- subclass type and inlines from abstract base
refactor for extensibility

- defined abstract base classes for product and producttype
- defined default classes for product and producttype
- dynamically load product and producttype classes
-
load classes dynamically
include migrations for new fieldtypes

- new field attribute: system, a boolean that indicates this field is not for
public consumption
new field: ProductFile

working towards selling digital downloads

- new field: ProductFile
- define digital assets associated with the product or as the product (ie
safety data sheets, music, software, etc)
- `is_commodity` define certain files to be commodities files, todo switch
this to a tag and use a manager that uses __get__ to filter on tag (will allow
for better template access)
- `requires_license_key` placeholder boolean to indicate that this file
requires a unique per user license key to unlock the download.
allow an image to be marked as primary

- `is_primary` : boolean that facilitates selection by the manager
`imagefields_set.primary()`
remove cause of circular import
directly import classes
we won't merge these classes here
inherit from configurableproductbase and baseproduct