First effort at support for JSR 330.

This checkin supports:
   @javax.inject.Inject to mark classes
   @javax.inject.Qualifier to identify binding annotations
   javax.inject.Provider injections
   A new Jsr330 utility class

Still outstanding:
   JSR 330 is more strict about where its annotations are applied. These restrictions are not yet enforced.

Notable change:
   When the user injects a javax.inject.Provider<T>, we canonicalize the dependency, and treat it exactly as if they injected a<T>. This is slightly weird! For example, these two keys are equal:
Key.get(new TypeLiteral<javax.inject.Provider<String>>() {})
Key.get(new TypeLiteral<<String>>() {})
   This is convenient, particularly for SPI users. And it means we don't need a linked binding between the Providers. But it could be quite surprising. I'm still trying to decide the right long term solution here...

git-svn-id: d779f126-a31b-0410-b53b-1d3aecad763e
12 files changed