Handle canceled orders

This PR makes it possible to differentiate between *cancelled* and *refused* orders, thus raising different Exceptions and allowing different outcomes on the application side.
Since the specific `PaymentCancelled` Exception isn't available yet in the official Oscar codebase, this is only possible if using the current Oscaro fork that already adds it.
If the Exception is not available, cancelled orders will be lumped with all the other "failed" ones.