Enable amounts per currency for flat rate promotions (fixes #5433) +

The flat rate's currency and the order's currency are compared and only if they match is the amount returned, 0 is returned otherwise; when the calculator returns 0 the promotion is not added to the order.

Currency was already a preference for the FlatRate calculator but it wasn't used.

Some tests did break with this fix in, it turns out the shipping factories were using the wrong calculators (as far as I can tell), which I've included a fix for - I switched the factories calculators to those in Spree::Calculator::Shipping.
Use the new Ruby 1.9 hash syntax.