Switch to an intermediate representation of a person (inc. memberships)

The motivation for this is partly that we want a simple representation
of everything we know about a person to put in the 'versions' array of a
person's PopIt record to enable easily reverting to that.

The representation we're now using is described in the comments at the
top of update.py.  That file also provides mixins for:

 - Taking that representation of a person, and updating a PopIt instance
   to match (PersonUpdateMixin) and
 - Fetching a person and their memberships from PopIt and turning it
   into that representation (PersonParseMixin)

This commit also rewrites the views that update data in PopIt to use
this representation.  (The constituency page view is still to be
updated, but should use PersonParseMixin in the future, in particular so
that it's easy to classify people into "known not to be standing again"
and "no known not to be standing again".)
Don't get all organization members when iterating over memberships

The number of members of political parties can be huge, and you don't
need that when you're iterating over the memberships of a particular
person.
Add a couple of things-to-do to the README
Debugging for the missing memberships bug
Add a script for reproducing the 'missing memberships' bug
Store all versions of a person, with attribution for each change

After this commit, new versions are at least stored in PopIt, although
the previous versions aren't presented in the interface yet and there's
no option to rollback yet.
Also store the username (currently null) and IP address with changes
Add the HTML5 required="required" attribute to source fields
Move the URLs into the candidates application urls.py
Use better constituency view URLs

We're moving towards consistently using MapIt area IDs to refer to
constituencies - this change also makes the constituency URLs look
better (e.g. with no uppercase or percent-encoded spaces)
Switch the standing / not standing buttons to use the MapIt Area ID

This is a series of changes to make the way we refer to constituencies
and candidate lists consistent, and all use the MapIt Area ID.
The sleep doesn't seem to make a difference
Also print out the membership count from the PUT response
Switch the new person form to use the MapIt Area ID

This is a series of changes to make the way we refer to constituencies
and candidate lists consistent, and all use the MapIt Area ID.
Some people may have memberships with no 'classification'
Add a view for autocompleting party names

This returns results roughly in order of the number of candidates each
party fielded in 2010.
Add the party autocomplete URL to the context where needed
Add a comment introducing some hide / reveal JS logic
Add autocompletion of party names with jQuery UI
Add a horrible hacky sleep to workaround a timing-related bug

This bug is described further in:

  https://github.com/mysociety/popit/issues/631

Essentially a GET for a person immediately after a PUT to update them
sometimes returns their data but without the memberships data.