Use SimpleLazyObject for request.basket

Note that I've made this PR more to discuss the implemented solution. If you guys agree with it then i'll add some unittests.

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`. Not sure why this is required since the 
basket is passed along.