Timer wheel implementation

Reviewer: @jnealtowns

This datastructure will be used by SocketManager, OFStateManager, and the ARP
agent to track large numbers (thousands) of timers.

The advantages of allowing modules to use this datastructure separately from
SocketManager's timers are that each entry doesn't need to store callback and
cookie pointers, an indirect call is avoided, and the bucketing parameters can
be adjusted based on the deadline distribution.