Report missing MSISDN fields more usefully in contact imports

Currently leaving out the MSISDN field results in an extremely obscure emailed traceback:
```
[&#39;  File &quot;/var/praekelt/vumi-go/go/contacts/tasks.py&quot;, line 276, in import_new_contacts_file\n    contact = contact_store.new_contact(**contact_dictionary)\n&#39;, &#39;  File &quot;/var/praekelt/vumi-go/ve/src/vumi/vumi/persist/model.py&quot;, line 650, in wrapper\n    return manager.call_decorator(func)(self, *args, **kw)\n&#39;, &#39;  File &quot;/var/praekelt/vumi-go/ve/src/vumi/vumi/utils.py&quot;, line 369, in wrapped\n    result = gen.send(result)\n&#39;, &#39;  File &quot;/var/praekelt/vumi-go/go/vumitools/contact/models.py&quot;, line 181, in new_contact\n    **self.settable_contact_fields(**fields))\n&#39;, &#39;  File &quot;/var/praekelt/vumi-go/ve/src/vumi/vumi/persist/model.py&quot;, line 832, in __call__\n    return self._modelcls(self._manager, key, **data)\n&#39;, &#39;  File &quot;/var/praekelt/vumi-go/ve/src/vumi/vumi/persist/model.py&quot;, line 211, in __init__\n    descriptor.initialize(self, field_value)\n&#39;, &#39;  File &quot;/var/praekelt/vumi
 -go/ve/src/vumi/vumi/persist/fields.py&quot;, line 37, in initialize\n    self.__set__(modelobj, value)\n&#39;, &#39;  File &quot;/var/praekelt/vumi-go/ve/src/vumi/vumi/persist/fields.py&quot;, line 85, in __set__\n    self.validate(value)\n&#39;, &#39;  File &quot;/var/praekelt/vumi-go/ve/src/vumi/vumi/persist/fields.py&quot;, line 34, in validate\n    self.field.validate(value)\n&#39;, &#39;  File &quot;/var/praekelt/vumi-go/ve/src/vumi/vumi/persist/fields.py&quot;, line 126, in validate\n    raise ValidationError(&quot;None is not allowed as a value for non-null&quot;\n&#39;]
```

We should instead report a more useful error and do it straight away before even starting the celery task.
Thanks for digging into that. I say the Travis failure after pushing and just went "it's a public holiday". :)