Add `Spree::Promotion#products` back.

Currently used in the frontend.

Closes #5071
Add mail_from_address field to general settings page

Closes #5047
changed generate_order_number method for insure that generated numbers never finish #5102
Fix broken specs from order number refactoring, and improve performance. Fixes #5102
Fix payment state in order importer. Fixes #5109
Allow assigning source_id and source_type rather than creating a new source.

Conflicts:
	core/lib/spree/permitted_attributes.rb
Revert "Allow assigning source_id and source_type rather than creating a new source."

This reverts commit 70de4094d3d5e53d35c52f8eb25b630429481cbd.
Use rand(10) to cover all digits 0-9. Fixes #5113
Fix credit card reuse on spree api
Nest existing_param input under order

Help us make things more consistent when working with checkout params
Dont update inventory if order has no delivery step
Admin users should be able to set any param via api importer
Add items before creating shipments on importer

Otherwise order.contents.add would wipe out shipments every time
Try to set inventory_unit.line_item on Importer

To avoid exception when users want to display those imported orders in
admin
Fix shipment persistence on order importer

Besides selecting the shipment rate we also need to assign the cost in
the shipment itself.

We cant only rely on order.update_shipment_state to actually well update
the order shipment_state (:O) because shipment states might not be sync
with the latest payment changes which influence on the result so
Shipment#determine_state needs to run to make sure we keep those
accurate
Calculate tax total correctly which depends on the item that could be an Order or a LineItem. Tax adjustments are stored differently in these two cases.

Fixes #4830
Fixes #4829
Speed up rename_adjustment_fields migration

I went to perform this migration on our production db while our store was in maintenance mode and realized it was going to take many hours -- it was loading some million or so Order objects, one at a time.

The first change is that we go from loading all Adjustments and asking whether their adjustable is an Order to just scoping the Adjustment call to only ask for the ones that are. That saved us about one million `if` statements.

The second change is to simply copy the `adjustable_id` over to `order_id` without ever fetching the Order -- who needs it? This saved us about one million ActiveRecord queries.

Happy to pass the fruits along to others on the 2.1--2.2 upgrade path!

Fixes #5121