Split core into frontend+models

There's been a number of situations now where people have wanted to customise the frontend of Spree so much that they've really just wanted the models. In this case, to include the frontend components with spree_core doesn't make logical sense if all people want is the models. Therefore, I've split up core into two different modules: "core" and "frontend".

**Core** is literally just the core of Spree. You *need* this in order to operate Spree. It contains the models, the mailers and nearly everything that previously lived in `lib/spree/core`. If you want Spree without all fat, this is it.

**Frontend** is the frontend of Spree, and it now has a solid dependency on **API**. The benefit of this dependency is so that we can gain numerous boons from using the API ourselves, such as using it for product and taxon searching in the backend. There are more things than these two basic things we could do with it.

**Promo** has been merged into Core and Frontend. It made no sense to have this as a separate part of the system when a) we were bundling it with everything by default anyway b) a lot of stores want/need promotions and c) the hacks that Promo had into the Order model and CheckoutController were getting ridiculous. So that's been tidied up now.

There are quite a large number of commits here (which I will be rebasing down soonish) and although I don't expect anybody to read through them all and follow my descent into madness and re-emergence, I would like some feedback on what else we could do in this pull request.

It's my intention that this forms the basis of the work for Spree 2.0.

@parndt brings up a good point that it's similar to Travis's architecture. Those are smart people working there.

----

**Support for Ruby 1.8 has been intentionally deprecated**

There are a number of gems (money, paperclip and truncate_html off the top of my head) which have either removed Ruby 1.8 support completely, or support it in a diminished capacity. This PR removes 1.8 capabilities from Spree *and* upgrades gem dependencies as they need to be for Ruby 1.9 goodness. We won't get a chance to force Ruby 1.9 until the next major version of Spree, and personally I'm not willing to wait that long.

----

**TODO**

- [x] Use API for product searching in order form 2a4c7a4
- [x] Use API for product searching in promotion form 2a4c7a4
- [x] Use API for option types in admin/product form 0e3d951
- [x] Use API for taxon lookup in admin/product form 5f7fdd7
- [x] Split out backend from frontend
- [x] Allow frontend + backend locales to be different (#1946) 
- [x] Use API for product searching in promotion rule form
- [x] Fix order_updater_specs in Core
- [x] Fix zones_controller spec in API
- [x] [frontend] Use API for states lookup in checkout form 4f77ff0805a3e7ebc6e13329db39ed7b5e3e8839
- [x] [backend] Use API for states lookup in customer details form
- [x] Add tests for different shipping method functionality, taken out with ac28b4e34cd583f86bf913b1a9b8b710bd3a5b95 -- done with 5c7145fa1830a8b8e0b6f0649db26e8048fb02fd
- [x] Find where `Spree.routes.product_search` is being used and replace it with API end point. d55266f
- [x] Add tests for different promotion functionality, taken out with ef24cd274b667839b57c20629e7b16a00b9b3bd7 -- done with f81ab2b