[Validator] Refactor Date

The `Date` validator converts `string`, `array`, and `int` values into `DateTime` instances, or tries to, as part of the validation process.  But, `DateStep` also uses a conversion process for helper dates.  So, the conversion process was synchronized with `Date` and refactored out into separate methods to allow extending classes to reuse the functionality and to reduce the complexity of the validation method.