REF: consolidate datetime parsing paths and exception handling
One last check I'd like to move down into dateutil_parse is the `if dt.tzinfo is not None:` in parse_datetime_string, but it turns doing that breaks a bunch of Period parsing bc of dateutil parsing "2001-11-19/2001-11-25" as 2001-11-19 20:01:00 with a tzoffset of -1500 hours.

I'm indifferent between "Unknown string format" vs "Unknown datetime string format", so happy to change to the other one.
@mroeschke @MarcoGorelli not time-sensitive but blocker-ish for ongoing parsing simplification sure, taking a look today