Fix for non-required CaptchaFields, and some initial test refactoring

See commit messages for details.

Use case: I have a CaptchaField which is only required if the user includes a suspicious URL in the body of a message field, and toggle the required attribute to indicate this. The current `CaptchaField.clean` method blows up when spammers hit it, because value[1] is None.