Generate unique indexes for new styles attachments form

Fixes #3940
Ensure api/orders return updated_at with miliseconds
touch updated_at in objects after changes

Fixes #3939
Spree.user_class class variable accepts a symbol value

Fixes #3930
LineItems#update and LineItems#destroy uses now OrderContents to update line items, ensuring order total, adjustments etc. are updated

Fixes #3931
Fixed promotions not updating after adding or removing item

Fixes #3931
Fixed error with Cart promotion handler when line_item was nil

Fixes #3931
refactor some checkout module methods

Fixes #3943
Introduce `persist_order_address` message for user

This would be resposible for associating the current order address with
the current user so that next time users checkout an order his previous
address would be automatically loaded
Add basic module for persisting order address on user

To make Spree remember user address on checkout users could include this
module to their Spree.user_class or build their own implementation of
`persist_order_address`
Allow users to choose whether they want to save their addresses
Add mail method translations
Scope translations for security settings + auth settings for mail methods

Fixes #3951
Replace spree_current_user for try_spree_current_user

As that's what the core provides. This should fix the errors in frontend
build
Only validate the month/year for CC info if there is no payment profile
A payment profile can either be a customer id or a payment profile id
Only show last digits on payment form if they exist
Added gateway_customer_profile_id and gateway_payment_profile_id to permitted attributes (for Stripe.js support)
Persist address ids on UserAddress module

Otherwise addresses would not be associated with the user at all
Introduce channel attr to Order model

Could be set when importing orders from other storefronts