Global product promotion blacklist

Any products not marked as `promotionable` will not have promotions applied to them. Also, orders containing only non-promotionable items won't have order-level promotions applied.

Not sure if there's a desire for such functionality in core, but figured I'd push up a pull-request and find out.
I'm not convinced this needs an index. Boolean fields typically don't benefit from indexes due to having low cardinality/selectivity. Stores with thousands of products in which only a few are `promotionable` would benefit from the index. However, for all other stores the index will make writes fractionally slower without any real benefit.

Also, for stores with thousands of products, the index is likely only to come into play for orders containing a large percentage of the products. (Which I suppose is possible, but I believe is highly unlikely to be the norm.)