tower5: single monad for node/task/sig hierarchy

* Node i a is a monad with implementation param i
  being either TaskSt or SignalSt.
  this way Task a is just Node TaskSt a,
  and by leaving i unspecified we get generic node
  functionality.
* codegen is part of node, and better organized than
  before.