Ensure checkout is possible when no shipping required

The modifications to ensure that the selected shipping method is still
valid later on were causing an issue for orders that didn't require a
shipping method.

This changes adjusts the default shipping repository to check the basket
to see if it requires shipping.  If not, then it returns a single
instance of ShippingNotRequired as the valid method.

Fixes #999