revert #53 to fix empty string usecase

#53 changed behaviour of `required` so that an empty string wasn't acceptable which was in contra to advice in #32.

Resolve #53 by adding allowEmpty property which checks for empty strings.