Fixing a string substitution error.
Adding check for whether the element is required

If an element is required but it does not have input, validation should
fail right away (even without running the validator thread).
Adapting validator.join() for non-started threads

It is possible to see a case where the validator thread was not
started.  In this case, join() does nothing and should just return.
Adding another case to validate in valid()

An element value should be validated when the validator thread is None
(meaning that it has never been validated before).