Adjust admin product tab selected

removing taxon from the list of controllers which make it selected

Fixes #2579
Refactor product duplication.

Fixes #2641
Use huoxito's suggested fix to fix CheckoutController spec

https://github.com/spree/spree/commit/7825e6dd24fea5810ceaf382736246a81460cfc7#commitcomment-2705000

Fixes #2601
orders api now returns its variants product id #2561 #2565

Fixes #2587
Added CouponApplicator class

Fixes #2548

This is a combination of four commits + this one:

* Use CouponApplicator in API's CheckoutsController
* Fix spec failures
* CheckoutsController spec for apply a coupon to an order
* Removed unnecessary include
[backend] Fix issue where option types were not being correctly set in Admin::ProductsController

Fixes #2639
Display useful message when no payment methods, shipments (for orders) or shipping methods can be found

Fixes #2636
[backend] Correct event_name checks in promotion_adjustments_spec
[api] Remove duplicate tests in OptionTypesController spec
Move money spec to core
Refactor Spree::Money's with_currency and no_cents option settings
Insert non-breaking space in Money objects where currency symbol is afterwards to prevent issues as seen in #2634

This commit introduces the to_html helper for Spree::Money objects

Fixes #2634