The foreach execution only works for operation ranges, typically stemming from pdl_interp.get_users. Custom rewrites/constraints can return ranges of types and values as well, however. This pr adds support for executing `pdl_interp.foreach` in those cases.