Product attributes

Added a new extension to support multi-level product attributes. Added
the ability for product variations to select multiple attributes to make
it unique and differentiate it from its parent. Added attributes to
products, to define stock levels and further product information e.g.
weight, height, dimensions - anything. Supports input in text, numeric,
currency and a unique-stock key.