local common subexpression elimination

Still missing:
* many  many tests!
* I guess we need fixpoint iteration even for this one?
Maybe use a `case class` instead of an `AnyRef` , like
    case class NodeLookupData(opCode: ?, block: Node, mode: Node, preds: List[Node], AnyRef: data)
that'll make it more clear.