Cart Rewrite

Everything seems to work as expected in my testing, so I think this could be merged into devel.
This custom function is better than nothing for now. I'll think about how best to support "one field or the other is required" validation with collection2.