This analysis allows algorithms to capture all loops, including irreducible
loops, in a structured way. Based on Havlak (1997), Nesting of Reducible and
Irreducible Loops. See the definition of a "cycle" in the header file and
the IR test cases for more detail.
This patch also immediately adds (new and old-style) IR function passes.
Change-Id: I91f0d001d18906126961dc4aa2f8727ad4aff87c
clang-format not found in user's PATH; not linting file.