Refactor TimeParser
Fallback to calculated precision if optPrecision seems wrong

See https://bugzilla.wikimedia.org/show_bug.cgi?id=62730

Before this change if 2012-02-00 was passed in with
precision of a DAY as an opt the TimeValue would have
the precision of a DAY.
Now instead this will fall back to the precision of
a MONTH
We are working on version 0.5!
Merge pull request #10 from DataValues/bug62730

Fixes Bug 62730