Changed error handling to avoid exceptions
Throwing exceptions was not an elegant solution here. Returning an
invalid date and having errorCode and errorMessage methods to provide
information about the last conversion seems to be a better solution.
In the process, I also cleaned up the interface a bit and hide
implementation details behind a d-pointer.
Reviewed By: habacker
Differential Revision: https://phabricator.kde.org/D18073