Write basic ICS files from Phutil intermediate objects
Summary: Ref T10747. Allows the intermediate event representation to be written out to an ICS file. This isn't full-featured but the core works.
Test Plan:
Added unit tests, ran unit tests.
Imported the resulting .ics file into Calendar.app, got an equivalent event:
{F1829151}
Reviewers: chad
Reviewed By: chad
Subscribers: kralo
Maniphest Tasks: T10747
Differential Revision: https://secure.phabricator.com/D16551