Change ${parent.version} to ${project.version} since Maven apparently complains about ${parent.version}.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=78201599
Making Singleton's creation lock less coarse.

Singleton is defined as a scope which creates no more than one
object per injector. It's highly confusing when you catch a deadlock
between two unrelated injectors due to the same class injection.

Problem is demonstrated using a test that recreates scenario when
one thread injecting class can block other thread to use its own
injector.

Proposed solution is to use Injector-wide locks in a singleton.
ThreadLocal as a way to store current state.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=78469951
Merge pull request #868 from google/moe_writing_branch_from_2b4dd1617e61fac3869381e9e7728b488badc5e2

Merge internal changes
Add "BOM" (Bill of Materials) for easier use with Maven

Guice extensions must generally have their version match the one
of Guice. Maven provides an easy way to make sure this is the case
with “BOMs” [1].

To make sure all your Guice dependencies (either direct or
transitive) use the same version (unless overridden), just add the
following to your <dependencyManagement> section:

    <dependency>
      <groupId>com.google.inject</groupId>
      <artifactId>guice-bom</artifactId>
      <version>${guice.version</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>

[1] https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies
Merge pull request #874 from tbroyer/guice-bom

Add "BOM" (Bill Of Material) for easier use with Maven
Simplifies Multibinder by moving Key generation to RealMultibinder's
constructor.

Tested:
All existing tests pass.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=79159620
Simplifies MapBinder by moving Key generation to RealMapBinder's constructor.

Tested:
All existing tests pass.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=79160583
Make SpiUtils tests more accurate by multiplying the expected results instead
of dividing the actual results. Before, some bindings weren't being checked
and this was overlooked by the tests due to rounding down the number of
leftover bindings.

Tested:
All existing tests pass.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=79167431
Adds a binding for Collection<javax.inject.Provider<E>> to Multibinder.
Before, only a Collection<com.google.inject.Provider<E>> was bound; now
both are bound.

Note that this required changes to SpiUtils because MapBinder uses a
Multibinder to bind Set<Entry<K, Provider<V>>. There is a bit of
strangeness here because it means that there is now a binding for
Collection<javax.inject.Provider<Map.Entry<K, Provider<V>>>.
Tested:
All existing and modified tests pass.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=79191051
Adds a test that explicitly tests all of the bindings created by MapBinder.
Current tests rely on SpiUtil to validate all bindings, but those tests are
hard to read and reason about; this test is explicit.

Tested:
The new test passes.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=79369985
Robustness: wrap any calls to System.getProperty in case security is enabled.

Since calling System.getProperty may throw an exception on locked-down systems.

Note: this patch has the side-effect of making the 'guice_include_stack_traces'
setting static, rather than querying the system property each time a module is
installed. Making the setting static improves performance as System.getProperty
can be a bottleneck, at the cost of being able to change the setting
on-the-fly.

(This is a slightly modified version of the pull request from #872.)
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=79427020
rm unchecked suppression.
Merge pull request #878 from google/moe_writing_branch_from_1215316c7bae68bde9133f8fffa43c074c156633

Merge internal changes.