Add validation that a constituency has been selected

We were getting error emails from people who would just click "Show
Candidates" without having selected a constituency from the constituency
name finder drop-down; this adds field validation to produce an error in
that case.
Rename 'form' to (the clearer) 'postcode_form'
Remove bad_constituency_id, which is no longer used
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