Pushing devlepment to version 0.2.4
Preventing changes to positive consent after withdraw

Once participant.withdraw_letter is set no changes can be made to a
participant's positive consent status.  This is to prevent them from
being automatically re-added after they have withdrawn.
Fixing warning caused by last commit
Merge remote branch 'origin/qa' into release
Merge remote branch 'origin/release' into develop
Replacing participant.status with new state table

Participant conditions (states) can now be managed by administrators and
each role can be restricted to only setting certain states.
NOTE: this commit does not include the UI code to enable editing of states.
Replacing participant.status with new state table (completed)

Implementation of UI elements.
Fixes for bugs caused by new participant state system
Tracking changes to participant email addresses

- email addresses are now validated using simple word@word.word validation
- any change to a participant's email address is tracked by date and time
- a new email report has been created which provides a list of all participants with new email addresses