Support deferred lookups of providers and members injectors from the Encounter. 

The behaviour is slightly different depending on when the InjectableTypeListener.hear() method is invoked...

A) If it's invoked before the Injector is created, then getProvider() always returns immediately. The provider may not be used until the injector has been created.

B) If it's invoked after the Injector has been created, then getProvider() builds the provider immediately. This includes the work to build the binding (recursively) and this method may fail with a ConfigurationException.

It would be possible to change B) to behave more like A), but the utility of doing so is quite limited. One case that still needs test coverage is when the listener calls getProvider(B.class) while hearing about B. For now, this will probably fail. That's probably okay for now.

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