Fix failing unit tests

- Addition of #3893 into develop broke test assumptions in #3879
  Basically, an empty string indicates a value was passed;
  one input, while it was marked as not required, was not marked as
  allow empty, and thus a validator that checked for string length
  failed. Changing the input to allow empty made the tests pass again.
- The question is: if a value is not marked as required, but has an
  empty string passed, should we pass it to the validator?
Fix failing tests in Zend\InputFilter

- Cleaned up BaseInputFilterTest to use a data provider; makes isolating failing
  cases simpler.
- Rewrote logic in validateInputs() to capture discrete use cases; more verbose,
  but easier to determine what is happening.
- Made executive decision: non-required input that is empty is valid.