[WIP] Multiway join rules

Add rules to compile query to a plan using HyperCube shuffle and multiway join. Three rules will be added:
* merge left deep join into nary join in logical plan
* break nary join to hypercube shuffle and local multiway join
* instantiate local multiway join (currently we only have leapfrog, but there could be more, so this part is seperated from break break nary join)