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