initial thoughts on how to extend spree to support extensions that custo...

...mize line items

Alll (@radar, @bdq, @jdutil, @simmsy),

Per our email thread, I wanted to get the ball rolling on this subject.

This (along with beginning to work on https://github.com/jsqu99/spree_product_customizations) represents only 3 hours worth of work.  

I wanted to get it pushed quickly to make I get feedback early and often.

Unfortunately I have been pulled off of this task, possibly for a few more weeks, but I'd love to get your thoughts.
We should make this signature smaller imo. Something like:

```ruby
def add(variant, quantity = 1, shipment = nil, options = {});
# Or even
def add(variant, quantity = 1, options = {})
```

Had thought about adding that options = {} to avoid things like taxes on the add / remove process when needed.