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