More improvements to the form validation

 * Validate on "change" rather than submit. This prevents errors
   appearing when the user tabs in/out of an input.
 * Keypress updating of errors in place errors to immediately indicate
   to the user when they have fixed an error.