delegated dependency tracking to output callbacks

⇒ input slots that use output callbacks make sure that the owner of the output
  callback keeps alive -- this is all we need to keep the relevant parts of the
  pipeline
API change: got rid of redundant "forward" and "backward" in Output and Input method names