Fix tine/merge drain detection

- The fact that we didn't get a value from any of the branches doesn't
  mean that it's drained.  That may just mean that none of the
  branches accepted the value.  Instead track that we are done in a
  boolean shared between all the tines and the merge node.  A tine
  that detects that input is drained sets the done flag, and merge
  later detects it.