Change `call_hooks` to be iterative rather than recursive
Change `call_hooks` to be iterative rather than recursive

We're seeing very deep call stacks from `call_hooks` in production.
This commit just changes the `call_hooks` method to be iterative rather
than recursive so that we don't have to build such a large stack when
executing instrumentation hooks.

xuorig/graphql-ruby,xuorig/graphql-ruby,nevesenin/graphql-ruby,rmosolgo/graphql-ruby,nevesenin/graphql-ruby,nevesenin/graphql-ruby,rmosolgo/graphql-ruby,rmosolgo/graphql-ruby,xuorig/graphql-ruby,rmosolgo/graphql-ruby,nevesenin/graphql-ruby