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.
di proper already has a CircularDependencyError, so to do that I had to replace all

import 'package:di/di.dart'; with
import 'package:di/di.dart' hide CircularDependencyError;

The problem is our tests all import '_specs.dart' and if I do that change there there noone can write any test involving di::CircularDependencyError. So I rather keep it as it is (maybe rename to DirectiveInjectorCircularDependencyError?)