Validate price maximum.

Price is constrained to be precision: 8, scale: 2 at the database level, but
that validation isn't reflected in the model.

This will lead to errors when prices are 1,000,000 or above, which is a lot in
USD, but 1 million Vietnamese Dongs is less than $50 USD.
@huoxito This commit contains that code: https://github.com/gmacdougall/spree/commit/b752b9a6055e1fa82d50b2756b391b6d7d9cb448

I don't want to open another pull request right now as it's based upon this pull request which has been partial merged in to radar/spree, and some of these changes are good for 2-3-stable, but others for master only.

I'll open a pull request for it once this one is dealt with unless @radar works some magic on his own.