Add payment exception to handle a user cancelling 

Many payment providers allow a user to cancel the payment flow. It makes sense to provide hooks for a code path that's different from a gateway error, as e.g. it might not make sense to prompt the user to retry the payment, or one would like to record the number of explicitly cancelled payments.

Idea and reasoning by @metamatik. It would be rather helpful to have this as part of the 0.8 release.