if `dateutil` is available, use it to parse datetimes

In particular, this picks up the default `datetime.isoformat()` output, with
a "T" as the separator.
add some tests
Merge pull request #343 from matchbox/dateutil

if `dateutil` is available, use it to parse datetimes