Concurrent injection provider

Guice constructs dependencies serially which can cause the injectee to
take a very long time to initialize.  For top level applications this
process can be sped up substantially by parallelizing creating the
dependencies.  The following approach provides a custom Provider that
will construct dependencies in parallel and only once all dependencies
have been constructed will it create the object.  See
ConcurrentProvider.of for more details.