Low: libcrmcommon: improve ISO 8601 error handling
This checks more error conditions, logs better error messages, and
always returns NULL for invalid specifications.
Significantly, this drops the CRM_CHECK() assertions for invalid specifications;
the values are provided by the user, not a bug, and should be handled
appropriately. This improves error output from the iso8601 tool.
As a side effect, this fixes several edge case bugs.