user-defined expirations
Summary:
Couple of notes:
1. is it a bummer not to have per-task callbacks of some kind? the interfaces set up here only tell you that some task expired, not which one expired. TM calls back with the Runnable object. is that useful?
2. std::chrono::* business is frustratingly verbose, but the safety/explicitness is nice. Not sure how I feel overall.
3. perhaps expirations should be given in microseconds even if we don't think we can accurately accomplish that
Test Plan: added unit
Reviewed By: hans@fb.com
Subscribers: fugalh, njormrod, bmatheny
FB internal diff:
D1563520