Drop buffers when latency gets larger than buffer size.

* To process data without dropouts, the buffer duration is an upper
  boundary for a node's latency. If a node's latency increases beyond
  the buffer duration, its throughput becomes too low to feed the
  final consumer with the necessary data rate.

* If we let a node just continue to produce buffers with a latency
  larger than the buffer duration, lateness will get bigger and
  bigger for its downstream nodes, it increases by the difference
  of latency and buffer duration with every subsequent buffer.
  A single node with too large latency thus disturbs the timing of
  all nodes downstream from it.

* When a node is simply too slow to handle the data rate, there is
  nothing we can do to fix that, dropouts will happen in any case.
  However, we can keep it from messing up the timing downstream:

* When latency surpasses buffer duration, we now change the node's
  run mode to B_DROP_DATA. If latency is later decreased again we
  change it back to the originally selected run mode. This fixes
  "runaway-lateness" problems by dropping data at exactly the point
  of contention and not letting the problem propagate to the final
  consumer.