Set an error code for phone_number_validator.

phone_number_validator works well when validating from a model, but not
so well when validating from a form field. It uses the default code of
"invalid," which the Django fields will map to a pre-defined error
message, ignoring the custom one given by the validator.

By setting a custom error code, this mapping won't happen, and the
validator's message will instead be used.

Unit tests were added to test the validator on a custom form (where the
problem appears), and on PhoneSetupView (where it does not, but the test
will ensure it never breaks without noticing).