Basic vertical fusion with collect working, successive working.
horizontal loop fusion preparation transformer done.
# This is a combination of 2 commits.
# The first commit's message is:

nested horizontal transform working, but vertical broken

# The 2nd commit message will be skipped:

#	somewhat stable state without much fusion
Nested horizontal fusion working, vertical fusion for simplecollect producer ignoring effects working
Vertical fusion for simpleCollectIf producer working
Fix wrong type in Array flatten codegen
Vertical fusion for MultiCollect producer working
Horizontal fusion prep pass working with vertical information, effects ignored
Effective fusion in scheduler working, but MultiCollect inner loops not fused yet.
Nested fusion working, keep track of which inner scopes will actually be one scope and thus can be fused across.
Fuse all loops in scheduler in single pass, not recursive