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