Allow users to specify card types

Fix to allow users to specify which cards they accept.
By default, this works exactly as it did- i.e., any number
can be entered and only a luhn check is run on it.
Users can now overide this behaviour by passing a list of
accepted cards as a 'types'kwarg to BankcardNumberField,
e.g.
BankcardNumberField(types=[bankcards.VISA, bankcards.VISA_ELECTRON,])

If this is specified, we check that the type of card is one we're
aware of and then that the card number matches the pattern for that
type of card

Fixes #949

@maikhoepfel rewrote the ImproperlyConfigured check using Python's sets.

Conflicts:
	oscar/apps/payment/forms.py