N-way merge first attempt

**DO NOT MERGE**

*This is an early preview with commented out lines, printlns, FIXMEs, bugs and whatnot.*

N-way merge and infrastructure for more complex fan-in operations. Currently following a strictly layered materialization that does not allow cycles. 
note that I changed that to `(n ⇒ n.isLeaf && n.diSuccessors.isEmpty)`