Add apply_promo_code endpoint

This commit adds the necessary logic to apply a promo code to an order against the API. The RESTful contract was structured in a way to be identical with the eventual API endpoint in Spree master, as implemented in this commit.

https://github.com/spree/spree/commit/72a5b74c47af975fc3492580415a4cdc2dc02c0c

Fixes #4258