Use SimpleLazyObject for request.basket

This is a major performance improvement for pages where the basket is 
not used (other pages or loading basket async via javascript).

Note that request.basket is now not available when calling 
`apply_offers_to_basket`. Note sure why this is required since the 
basket is passed along.
Fix unittests by checking if request.basket is a SimpleLazyObject
Small stylefix in BasketMiddleware.process_response

We already checked if request has the 'basket' attribute, no need to check it twice
Merge branch 'LUKKIEN-lazy-load-basket'