angular/angular.dart — pull request #1475 by vicb (2014-09-18 08:59:08+00:00)
Title: chore(DI): update to v3.0.0

**Commit comment**
```
This is a breaking change: all classes that are instantiated via the DI
should be annotated (with one of @Injectable, @Component, @Decorator or
@Formatter).

Before this PR, the annotation were not enforced and the code could
break while switching to the static version of the DI because of a
missing annotation.

The impact on user code should be very limited as non-annotated classes
would not have worked before anyway. The error message is now clearer.

There is one corner case that might happen: by default the DI only
supports one annotation (@Injectable) and angular specific annotations
(@Component, @Decorator and @Formatter) are only added at the time a
dynamic application is created. If the code instantiates a module before
an application is created the angular specific annotations should be
added manually:

assert(() {
Module.classAnnotations.addAll[Component, Decorator, Formatter]);
return true;
});

// Module can be instantiated here before the app is created
```

**Notes**

A side effect of this PR is that classes that were used only via the dynamic injector (during tests) should now have the `@Injectable` annotation.

While this is something we could change by updating the DI, I actually find the code clearer because it becomes easier to know which class might get injected.

While this code is technically a breaking change, there should be very little impact on the user code as indicated in the commit comment. The seldom cases where a break could occur are detailed in the comment.