Move create_tax_charge callback to after transitioning from address, rather than before delivery

Fixes #4280
Check for delivery step before attempting to use delivery? helper in Order#has_available_payment

If the state machine is redefined to not have this step, then the helper will not be there and the state machine gem will error out

     Failure/Error: order.next!
     IndexError:
       :delivery is an invalid name
Stub has_available_payment method to stop has_step? callbacks
Payment state should be set to credit_owed if payment has been taken but there are no line items

Fixes #4281
Ensure products get assigned a 'proper' permalink when duplicating

The caveat of this is is that if you clone a deleted product, it'll look something like this:

copy-of-1392174386_apache-baseball-jersey-1

That's easily fixable, though.

Fixes #4180
No longer run the actions for a promotion if that promotion is not eligible

Fixes #4270
order concurrency for 2-1-stable spree

* separate PR for 2-1-stable due for https://github.com/spree/spree/pull/4286

Fixes #4334

Conflicts:
	api/app/controllers/spree/api/checkouts_controller.rb
	api/app/controllers/spree/api/orders_controller.rb
	core/lib/spree/core/controller_helpers/order.rb
	frontend/spec/controllers/spree/current_order_tracking_spec.rb
Return true/false with Promotion#activate

This way, you can tell if the promotion was really activated or not
Show the coupon_code_not_eligible if Promotion#activate returns false in CouponApplicator
Use correct find_by_number! syntax for this branch
[api] Remove duplicate 'next' action from CheckoutsController
Use find_order in find_and_authorize! to ensure correct locking
Use valid syntax for finding an order in controller_helpers/order
Remove duplicate test from current_order_tracking_spec
Remove test from current_order_tracking which belongs only in 2-1-stable
call current_order correctly in orders controller
stub current_order rather than stubbing its implementation in orders_controller_spec
Use first and not first! in current_order helper

first! raises an AR::NotFound exception, which causes issues in OrdersController#edit
Pass create_order_if_necessary as an option, rather than the first argument to current_ordeR