Improve checkout

Got a bit carried away here. 

This PR makes a variety of changes to Oscar's checkout structure, to simplify things and close off a few validation gaps.

The headline changes are:

- Each checkout view class now supports pre-conditions are defined by a class-level tuple of method names. This simplifies the classes themselves and is easy to extend and customised.

- The flow of the `PaymentDetailsView` has been adjusted to make it easier to customise and to allow bound payment forms to be given to templates when payment errors occurred (an old annoyance from 0.6).

- The demo site has been extended to support taking billing addresses as part of payment

- Lots of tests have been adjusted to use webtest rather than the test client (I got side-tracked into this while cleaning up the checkout functional tests).