feat(directive-injector): detect and throw on circular deps

The maximum depth for depth for dependency construction within a single
injector is set to 50.

No performance degradation observed on tree benchmark.

Closes #1364