Make sure checkout payment only flow works

Fixes #3142

Conflicts:
	frontend/app/views/spree/checkout/payment/_gateway.html.erb
Really fix shipment number generation

Fixes #4063

(really)
Add delivery method for applying mail settings

This allows changes to mail settings to be applied without a server
restart.

Spree::Core::MailMethod reads mail settings from config at each delivery
and initializes a new instance of Mail::SMTP with those settings to
perform the actual delivery. It also skips delivery if
Config.enable_mail_delivery is false.

MailSettings.override! now just sets the delivery method to :smtp

Fixes #4093
Don't access :allow_ssl_in_* during initialization

Fixes #4094
Make sure that api requires authentication by default

Fixes #4096
Remove Spree::LegacyUser.anonymous! and anonymous?

These methods seem to have no more use within Spree.
Add EmailValidator#valid?

This method can be used outside the scope of an AR instance to validate if an email is indeed valid or not

Used within spree_auth_devise's CheckoutController decorator as of 29d167655314961e1043ae45694528b8f364c3fc
make sure we load the promotion rules after initialize so the user rules are correctly saved. also remove the after_save on promotion, this is no longer needed.
[api] Passing without_children=1 to taxons endpoint will now return a 'shallow' result set without children

Fixes #4112
Only show orders/mine for persisted users
[backend] remove reference to removed anonymous? method in customer_details/form
make sure we use the proper check for checkout steps to render the shipment state

Fixes #4107
Fix issue where checkout failing on confirm step would redirect back to address step

Fixes #4117
Add migration to ensure shipping method categories are unique

Related to #4102
Remove duplicate join record creation

Related to #4102
Refactor shipping method creation to use a single method call

Related to #4102
Change package to return common shipping methods

* The previous code would return shipping methods that only applied
  to one of the shipping categories in the package. IMHO the more
  correct approach is to return only the shipping methods that are
  common between all the shipping categories.
* The #to_a at the end handles the case where the shipping
  categories are empty, so that an empty Array is returned rather
  than nil.

Related to #4102
Allow paging and order filtering on the mine endpoint

Fixes #4099
Get orders through current_api_user

From #4099
[api] Add ability to get properties by id

Fixes #4091