isl_transitive_closure.c: extract out some reusable code
isl_transitive_closure.c: extract out some reusable code

In particular, the code will also be useful for computing transitive
closures of union maps.

Signed-off-by: Sven Verdoolaege <e5350bbed4977f5eb8ae1dc6abd9ae59d21ace75@kotnet.org>

inducer/isl-mirror,PollyLabs/isl,epowers/isl,abduld/isl,inducer/isl-mirror,UBERTC/isl,inducer/isl-mirror,Meinersbur/isl,evaautomation/isl,tobig/isl,pierrotdelalune/isl,evaautomation/isl,epowers/isl,serge-sans-paille/isl,epowers/isl,UBERTC/isl,VanirLLVM/toolchain_isl,jleben/isl,PollyLabs/isl,pierrotdelalune/isl,VanirLLVM/toolchain_isl,simbuerg/isl,PollyLabs/isl,simbuerg/isl,nicolasvasilache/isl,cfx-next/toolchain_isl-upstream,serge-sans-paille/isl,BenzoSM/isl,BobSaget-Mod/libisl,pierrotdelalune/isl,Meinersbur/isl,jleben/isl,BobSaget-Mod/libisl,tobig/isl,jleben/isl,tobig/isl,simbuerg/isl,jleben/isl,BobSaget-Mod/libisl,simbuerg/isl,abduld/isl,KangDroidSMProject/ISL,Meinersbur/isl,inducer/isl-mirror,UBERTC/isl,Meinersbur/isl,BenzoSM/isl,crossbuild/isl,UBERTC/isl,KangDroidSMProject/ISL,serge-sans-paille/isl,SaberMod/isl-current,jleben/isl,PollyLabs/isl,crossbuild/isl,cfx-next/toolchain_isl-upstream,crossbuild/isl,BenzoSM/isl,nicolasvasilache/isl,BenzoSM/isl,BenzoSM/isl,cfx-next/toolchain_isl-upstream,Distrotech/isl,SaberMod/isl-current,pierrotdelalune/isl,nicolasvasilache/isl,VanirLLVM/toolchain_isl,nicolasvasilache/isl,BobSaget-Mod/libisl,inducer/isl-mirror,Distrotech/isl,tobig/isl,SaberMod/isl-current,evaautomation/isl,Distrotech/isl,serge-sans-paille/isl,abduld/isl,epowers/isl,cfx-next/toolchain_isl-upstream,VanirLLVM/toolchain_isl,PollyLabs/isl,VanirLLVM/toolchain_isl,serge-sans-paille/isl,abduld/isl,KangDroidSMProject/ISL,pierrotdelalune/isl,KangDroidSMProject/ISL,nicolasvasilache/isl,Distrotech/isl,epowers/isl,cfx-next/toolchain_isl-upstream,SaberMod/isl-current,simbuerg/isl,crossbuild/isl,KangDroidSMProject/ISL,Distrotech/isl,evaautomation/isl,BobSaget-Mod/libisl