CoDel AQM implementation

CoDel implementation for AQM to mitigate bufferbloat. Drops packets from the queue based on the
sojourn time of the packet in the queue.
Searches the nearest upstream storage element first (eg Queue) and acts on that. If downstream
not found, then looks for the upstream element. It needs the "SetTimestamp" element prior
to the 'Queue', which sets the "first timestamp" annotation. CoDel then uses this annotation
to track the sojourn time, and then later overwrites it with the resulting sojourn time for
possible analysis thereafter.
Ref: http://queue.acm.org/detail.cfm?id=2209336

Signed-off-by: Apurv Bhartia <apurv@meraki.com>