Change confirm step label to uniform it with other steps

Fixes #4075
Leave comment as to why we need to do next_transition.run_callbacks in OrdersController
Only require email when past cart or address

This means that an email field can now be provided on either the cart or address forms

More importantly, the 'state' field will now say 'address' when users reach that state, rather than 'cart'

Fixes #4079
[api] Remove test checking for email validation failure after cart

No longer required since 177fecf32cce98b78b56d6bef8d01ab137ea0726
Switch state for email validation test to address, so that its triggered on transition to delivery

Necessary after 177fecf32cce98b78b56d6bef8d01ab137ea0726
Ensure that state_changes aren't created when the state doesn't change

In retrospect, this seems very obvious.

Fixes #4072

Conflicts:
	core/app/models/spree/order.rb
	core/spec/models/spree/order_spec.rb
Move shipments JS out of variants_autocomplete.js and into shipments.js
Fix for Spree::Money's default currency when currency can't be detected, add test

Fixes #4077
Make order state_changes test more robust
[backend] (customer_details/edit) Show customer select box when order is in address state too
Specify class_name for OptionValue's option_type association

If you attempted to assign any non Spree::OptionType object to this association, it would result in a vague uninitialized constant error

Conflicts:
	core/app/models/spree/option_value.rb
Showing line items on orders screen now when there are no shipments

Fixes #3958
fix for report locale names when extending via class_eval

* source issue: https://github.com/spree/spree/issues/4086
* try to maintain the reports not in a constant
* make it easier to add new reports over current merging arrays way
* clean up to avoid test breakage in the ui tests due to missing routes
* added a test on GET :index to check for regressions for my change

Fixes #4086
Fixes #4087