Checkout: pre_conditions should be list, not a tuple

Tuples are for list of heterogenous collections and expensive to modify.
Lists are homogenous collections and cheap to modify.

https://stackoverflow.com/questions/1708510/python-list-vs-tuple-when-to-use-each

Also moved get_template_names to the bottom of the view as it's executed
last.
Checkout: Skip payment if order total is zero

When ordering a basket of free products, or with vouchers giving 100%
discount, we should not collect payment details.

To achieve this, I've added a check to the CheckoutSessionMixin which
calculates the order total and decides whether payment is necessary.

The modified test failed because the OrderCalculator called by
check_payment_is_necessary accessed other properties on the shipping
method. We now just mock a valid shipping method, which still achieves
the aim of ensuring there's only one.
Rename check_preconditions to check_pre_conditions

To be consistent.
Don't test skipping logic in view

Simply redirect to the next view in the chain and allow the
pre-conditions to handle redirecting to the right view.
Distinguish between pre- and skip-conditions for checkout views

Terminology:

- A *pre*-condition is a condition that must be met in order for a view
  to be available. If it isn't then the customer will be redirected to
  a view *earlier* in the chain.

- A *skip*-condition is a condition that must NOT be met in order for a
  view to be available. If the condition is met, this means the view can
  be skipped and the customer should be redirected to a view *later* in
  the chain.

This change implements the above by introducing skip conditions for
checkout views. They allow the previous payment pre-conditions to be
cleanly separated.

An existing basket pre-condition is also changed to be a skip-condition.
Correct guest checkout test assertion
Add documentation for skip conditions
Merge branch 'issue/1348/skip_payment'

Conflicts:
	docs/source/releases/v0.8.rst