Extract payload to a let statement.

Refactor eligible_rules to return rules.

This is helpful to understand which rules a promotion matched at some
point later down the promotion chain.

Extract line items to adjust in to Promotion.

This is part of moving the logic out of the promotion actions in to a
place that knows a little more about the context of what should be
applied.

Add actionable? call.

Move line item actionable to promotion.

No adjustments for non-actionable items.

The logic around this has changed a little, as adjustments are no longer
created for non-eligible promotions, due to the selection on actionable.

Remove products method (no longer used)

This is deprecated, as this logic is all done internally by the product
rule and related actions.

Conflicts:
	core/app/models/spree/promotion.rb
	core/app/models/spree/promotion/actions/create_item_adjustments.rb
Line items not actionable unless order eligible
Clarify nil vs. [] on eligible rules.
Fix Spree::Promotion not applying all of the time.

There was a specific case in which promotions added to an order would
not apply to new items added to the cart. This corrects that by having
the PromotionHandler activate all promotions already associated with the
order as well as any with a blank code and path.
Add 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.
"Promotionable" => "Promotable" for users.
Make `blacklisted?` a private method.
Add tiered percent calculator.
Removes ranges from tiers in favour of numbers.

Easier to maintain I think.
Move promotion action calculator to partial.

Also, make it possible to override the default fields with a calculator
specific partial.
Move hidden calculator ID out of partial.

Would be the same for all calculators. So no need to duplicate that.
Add tiered percent calculator partial.

Makes it a little easier to create and edit tiers than having to know
the specifics of the internals.
Add tiered flat rate calculator.
Admin partial for tiered flat rate calculator.
Fix JS error when templates aren't on page.

Not all calculators will have those templates. Shouldn't throw a JS
error when that happens.
Add feature spec for tiered promotion calculators.

Covers basic add and edit actions.
Better errors on coupon code failing

Assuming everything that wouldn't activate properly was "already
applied" doesn't work since anything that fails to activate but wasn't
"already applied" shows up to an end-user as "already applied". By
explicitly checking for coupons already applied we can put a more
generic error if activate fails.

Fixes #4781
The result call is checked earlier

It does nothing inside this function. and its all private. so I can
change what I want.
Remove merge conflict
Fix tiered preferences not storing as floats.

Old-style preferences are not super fun to work with.