Custom product data

Enable custom product data from the csv import/export tools. Required a good bit of refactoring from the previous style.
i think we should just make `product_data` a `DictProperty` on the model (and call it metadata?) similar to what we do with users, groups, locations, etc.