angular/di.dart — pull request #180 by vsavkin (2014-09-18 12:43:33+00:00)
Title: Replace annotation types with annotation instances

Currently `bind` takes an annotation type.

```
bind(SomeClass, withAnnotation: SomeAnnotation)
// this creates new Key(SomeClass, SomeAnnotation);
```

This means that although you can pass arguments to an annotation, they will be ignored.

```
class SomeClass {
SomeClass(@Event('change') Function eventEmitter) // the event type is lost
}
```

This PR makes changes `Key` and `bind` to accept an instance.

```
bind(SomeClass, withAnnotation: const SomeAnnotation())
// this creates new Key(SomeClass, const SomeAnnotation());
```

This makes such things as `@Event('change')` possible, and also cleans up existing code. For instance, the following

```
class SomeClass {
SomeClass(@InjectAddress String address, @InjectName String name)
}
```

can be replaced with

```
class SomeClass {
SomeClass(@Inject('address') String address, @Inject('name') String name)
}
```

This PR depends on #179.
Don't merge it until #179 is merged and deployed.