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 changes `Key` and `bind` to accept an instance.

```
bind(SomeClass, withAnnotation: const SomeAnnotation())
// this creates new Key(SomeClass, const SomeAnnotation());
```


This makes `@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.
ParameterMirror is a DeclarationMirror. As far as I understand it is for the cases when const is part of a declaration, e.g.,

```
const x = 10;
```

Calling `reflect` on `const MyAnnotation("blah")` gives you an InstanceMirror, which does not have `isConst`.