Offers / Allow custom benefits to be registered and used

Similar to custom ranges and conditions, these should allow a developer to register a custom benefit class that can be used in an offer.

Requirements:

* Document the interface that the class must conform to.
* Allow a deferred application for things like bumping loyalty points - this shouldn't happen in the normal `apply` method
* Allow the success message to be customised (ie what the customer sees when they've qualified for the custom benefit)

Tasks

- [ ] Document how to create a custom benefit
- [ ] Install offers as part of sandbox creation