refactor AtFork
refactor AtFork

Summary: Split out singleton things from non-singleton things. `AtForkList` can be made non-singleton, with only its callers being singletons. Split out a new class `AtForkListSingleton`. Reduces some complexity and overhead within `AtForkList`.

Reviewed By: Gownta, Decave

Differential Revision: D34370077

fbshipit-source-id: 96267aa72320a37c3386e25ec033f119a202ba7a

facebook/folly,facebook/folly,facebook/folly,facebook/folly,facebook/folly