[LICM] Sink entire inner loops.
Currently, LICM can only move individual instructions. However, inner
loops can also be moved: If the outputs of a loop, (which are just
the phi nodes in the exit block, thanks to LCSSA form) are not used
in the outer loop, it can be sunk.
This patch teaches the LICM pass to sink an entire inner loop to the
exit block of its parent loop.
This is a very public header, so please add good doxygen comments.