Allow DateTime objects to be serialized and deserialized
Summary:
Ref T10747. I have to move CalendarEvents to use these for everything because ICS files can have events which we can't represent with an epoch (e.g., floating "4PM" events).
Also improve some timezone/floating logic when rendering to ISO8601.
Test Plan: arc unit; see next change.
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10747
Differential Revision: https://secure.phabricator.com/D16653