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

The maximum depth for depth for dependency resolution is set to 50.
No performance degradation observed on tree benchmark.
> We should be careful not to introduce other public methods for getting items.

What about adding a comment on `getByKey` ?