Add reshapeOuter convenience function.
Add some ISWIM tests.
Add ReshapeInner to SOAC input type.
Remove SOACNest.pureNest, it was never used anyway.
Add NeedNames monad.
Add MapNest module for making inspection of map nests simpler.

Use this to fix and improve the fusing-across-transpose functionality.

Incidentally, also moves the TryFusion monad into its own module...