This also refactor FunnelTracker to provide a GetOrRegister method to prevent race condition
A funnel is an abstraction for 1 source to many destinations. As part of this refactoring, shared logic between Darwin and Linux are moved into icmp_posix