Add a function to get results from MapIt with caching

It's probably a good idea to cache results from MapIt anyway, but it
also means that we can check a postcode via MapIt in validation without
having to go to MapIt a second time in form_valid.

This commit just introduces the code; it isn't used anywhere yet.
Switch to using field validation to check for valid postcodes

The previous way of dealing with errors returned from MapIt was horrid,
this cleans it up a bit so all validation happens in a form method.
Rearrange some lines in a view
Test that people can't post unknown constituency IDs