Normalizes clone_object_url

[Fixes #3292]
Use canonical-rails for SEO.

Conflicts:
	frontend/spec/requests/template_rendering_spec.rb
Make PercentPerItem also check if rule responds to #products, the same as PerItem does

Test that the code does as it should
Fix failing spec and cleanup some deprecations.
[Core] Fix mock and stub deprecations.
Don't touch stock items when order is not completed

Fixes #3324
Fixes #3334
Remove pending specs in OrderInventory
Apply coupon before payments are created and processed

Payments can't be created before a promotion discount is applied,
otherwise we get inconsistent values between payment amount and order
totals

Fixes #3351
Display right price when product has variants

When a user loads the product page it was not displaying the price of
the variant chosen on the form

Fixes #3384
Fix issue where 'deleting' a product would cause admin products listing to error out

Fixes #3385
Fix RSpec deprecation warning with should_not raise_error(SpecificErrorMessage)

DEPRECATION: expect { }.not_to raise_error(SpecificErrorClass) is deprecated. Use  instead.
Clean up most rspec deprecation warnings

Too much noise when running api and core build

Fixes #3376
avoid hard-coding path of orders, stock locations + variants APIs

Fixes #3371
Fixes #3372
[api] Remove excessive do/end block from variants resources definition
Click "Update" button on order details page, not "Continue"
Use spree_login_path instead of spree.login_path

When redirecting users for authentication, `spree.login_path` doesn't
work properly when a `login` named route is defined outside the spree
core engine scope. Besides it keeps compatibility with what it's defined
in lib/spree/authentication_helpers.rb
Only create assets if component is included (on install)

In cases users are only running a backend application, for example,
there's no need to add frontend assets as it would only break user
application

Fixes #3368
Create partials for every section of admin layout

Help users and extensions to customize those sections more easily