Refactor Spree::OrderUpdater#persist_totals to be simpler
Add validations to Spree::Order

* This focuses most on improving the existing validations and adding
  validations for the totals that are updated based on user input.
Change Spree::OrderUpdater#persist_totals to validate the totals

* If the totals are greater than the database columns can store, then we
  should avoid hitting the database and report the error.