Refactor to accommodate blank & invalid dates & times

Adding support to allow string representations of dates/time.

This is to support a non dropdown web form where a user can supply
a date and time in separate input fields, if an error was to occur,
the user input should be represented to the user.

TODO:
* Update version number and documentation.