Custom products

Trying to rebase my own fork with custom changes that include this (unmerged to upstream) branch so while bumping your branch locally to contain latest cartridge master I thought if you want here is a pull :)

One conflict in views which I believe I resolved, here is the original conflict

```
<<<<<<< HEAD

    templates = []
    # Check for a template matching the page's content model.
    if product.content_model is not None:
        templates.append(u"shop/products/%s.html" % product.content_model)
    templates.append(template)

=======
    templates = [u"shop/%s.html" % unicode(product.slug), template]
>>>>>>> d95666cfc16f00aa6813791ea1cab5a379610bfa
```