Updates the internals of an Element's source to keep track of the Modules that installed it, as well as the complete stack trace leading to the binding. The data is not yet exposed in Element.getSource(), but will be exposed in a future CL.

Technical details:
1) The call stack data is only available for elements created by the binder (excepting Message objects). So, elements that are created at injection time (e.g, JIT bindings, Stage, Injector, Logger, etc.) will not contain these data.
For elements affected, ElementSource.getDeclaringSource() should return what is returned by getSource() currently.
2) In the case of binding builder, similar to the current implementation, ElementSource provides the call stack of builder creation not 'element addition to the binder's elements.'

-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=50247441
Give more information when duplicate elements are found in a multibound set.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=50265868
Automated g4 rollback of changelist 50265868.

*** Reason for rollback ***

Multibound set is no longer Serializable, whoops.

*** Original change description ***

Give more information when duplicate elements are found in a multibound set.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=50268399
Fix random bitwise | to be a real ||.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=50288042
Give more information when duplicate elements are found in a multibound set.

Second attempt at [], which was rolled back in [], because it broke serializability. Turns out we were using Collections.immutableSet, not ImmutableSet.copyOf. Grrr.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=50346773
Fix typo in comment for Provides annotation.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=50518753
Added suppression to @javax.inject.Inject on a final field test case so we can make it a compiler error
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=50571127
Doing a cleanup before we can make having @javax.inject.Inject on an abstract method a compile error. I am suppressing the error for the test case that intentionally tests this error.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=50571932
Merge remote-tracking branch 'upstream/master'