feat(injector): support binding annotated dependencies

class First() {
  const First();
}
class A {}
class AFirst implements A { }
class Klass {
  Klass(@First() A);
}
new Module()
    ..type(A, withAnnotation: First, implementedBy: AFirst)