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. 
So I think that these things are so similar that we can definitely refactor them into common subclasses, but that's for another ticket.