Remove ShippingMethod#displayable?

This method doesn't appear to be acted on anywhere inside Spree's code, thereby making it useless
Remove ancient comment for Zone#include?
Remove Payment#promo_total

We have this information from the Order model. We can just access it from there, just like we do with item_total, ship_total and tax_total
Added CouponApplicator class

This is used within API's CheckoutsController and frontend's CheckoutController
and OrdersController.
Fix route reference in shared/_alert so that it can be shared

Causes errors in custom admin sections otherwise.

Fixes #2564
Don't check doubly for order completion
Re-add missing update_positions_admin_product_product_properties_url

Fixes #2567
prefixed root_path with spree to make compatable with extensions

Fixes #2577
Fixes first order promotion rule

The previous logic applied to this rule prevented it from being eligible
in any context

Fixes #2569
Allow order to be transitioned by calling next API endpoint

Previously, this was done through the update action, but now since that the order.next return value isn't checked there (for good reasons!) we're going to have to do it somewhere else. A 'next' endpoint is a logical choice, so we do that. This will also be able to tell users *why* their orders may not be transitioning in the API
Only admins can associate a user with an order through the API
Don't check for imaginary 'could not be transitioned' error message when updating an order with invalid attributes through the API

The error is now a typical invalid resource response
[api] Correctly stub CouponApplicator#apply to return a hash in CheckoutsControllerSpec
Fix ShippingMethod.all_available calls in Order and ShippingMethod models
Define group_by_products_id as a method so its existence isn't dependent on the table existing

Fixes #1247