Ensure that state_changes aren't created when the state doesn't change

In retrospect, this seems very obvious.

Fixes #4072

Conflicts:
	core/app/models/spree/order.rb
	core/spec/models/spree/order_spec.rb
Move shipments JS out of variants_autocomplete.js and into shipments.js
Fix for Spree::Money's default currency when currency can't be detected, add test

Fixes #4077
Make order state_changes test more robust