spree/spree — pull request #2225 by radar (2012-11-20 04:33:21+00:00)
Title: 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 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.

----

**TODO**

* Use API for product searching in order form
* Use API for product searching in promotion form
* Use API for option types in admin/product form
* Use API for taxon lookup in admin/product form