The need for this was driven by a JSC patch that would like to use timers but currently can't. This patch will solve that patch's problem as well as a few others: 1. JSC's GC uses a timer and recreates functionality already present in WebCore's Timer. 2. New JS features need access to timers and a run loop. (This should make JS promises work in pure JSC).