Added updated 4.0 api diffs.
Added updated Javadocs.
Fix uploadJavadocs.sh script to work with git.
Revert "Added updated 4.0 api diffs."

This reverts commit 8240b434a5922173fb53e5946cabc54e55512798.
Added updated 4.0 api diffs.
Fix up API diffs upload script.
Unbreak MOE by adding a .gitignore to extensions (suppressing build/ folders under it) and narrowing the exclusion of bduild folders in the root to just at the root.  This lets /lib/build exist and be used, including by MOE.
Memoize Key#toString() to reduce allocations.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=63557612
Preparations for OptionalBinder.  This fixes MapBinder's SPI so elements from different MapBinders are distinct, and also fixes ProviderLookup's Provider so it exposes its dependency, which allows MapBinder to properly find its dependencies.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=63811558
Adds a new OptionalBinder.  OptionalBinder allows frameworks to setup bindings for items that user code may or may not bind.  It also allows frameworks to set default values that users can override.

The API is:
OptionalBinder.newOptionalBinder(Binder, Class|TypeLiteral|Key) -> OptionalBinder
optionalBinder.setDefault -> LinkedBindingBuilder
optionalBinder.setBinding -> LinkedBindingBuilder

By way of example, this will do:

newOptionalBinder(..) -> @Inject Thing -> exception: neither setDefault nor setBinding called
newOptionalBinder(..) -> @Inject Optional<Thing> -> isPresent() == false
newOptionalBinder(..).setDefault().to("a") -> @Inject Thing -> "a"
newOptionalBinder(..).setDefault().to("a") -> @Inject Optional<Thing> --> get() == "a"
newOptionalBinder(..).setDefault().to("a") + newOptionalBinder(..).setBinding().to("b") -> @Inject Thing -> "b"
newOptionalBinder(..).setDefault().to("a") + newOptionalBinder(..).setBinding().to("b") -> @Inject Optional<Thing> -> get() == "b"
newOptionalBinder(..).setBinding().to("b") -> @Inject Thing -> "b"
newOptionalBinder(..).setBinding().to("b") -> @Inject Optional<Thing> -> get() == "b"
newOptionalBinder(..).setDefault().to("a") + newOptionalBinder(..).setDefault().to("b") -> configuration exception
newOptionalBinder(..).setBinding().to("a") + newOptionalBinder(..).setBinding().to("b") -> configuration exception

(This also adds the jsr305 jar for build time, because doclava wanted it. Frustrating.)

(This also fixes users that implemented MultibindingsTargetVisitor, because I can't use default methods yet.)
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=63873859
Add OptionalBinderTest into multibindings AllTests.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=63966263
Enhance WeakKeySet to auto evict keys and avoid calling toString on Keys.

This should fix https://code.google.com/p/google-guice/issues/detail?id=756.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64083354
Fix MapBinder's duplicate key error message so that more than one binding with the same source gets listed twice.  This was causing a problem with the tests that turned stack traces off, because the two different bindings line numbers were both changed to "Unknown Source", so it collapsed them into a single item.

Maven ran all the flag variations for core + extensions.
Internal builds ran them all just for core, not the extensions (fixed in this CL).
Ant runs them all for core, but doesn't even run any extension tests AFAICT (not fixed in this CL).
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64143669
*** Reason for rollback ***

Causes an internal test to become flaky.

*** Original change description ***

Enhance WeakKeySet to auto evict keys and avoid calling toString on Keys.

This should fix https://code.google.com/p/google-guice/issues/detail?id=756.

-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64181193
The bug in the test that became flaky has been fixed. Note that this is not a strict rollback of the rollback - I've added protection against the NPE that would happen if there's a GC between the isBlacklisted call and the getSources call.

*** Original change description ***

Enhance WeakKeySet to auto evict keys and avoid calling toString on Keys.

This should fix https://code.google.com/p/google-guice/issues/detail?id=756.

-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64507759
Change Opcodes.ASM4 to Opcodes.ASM5, to work with java8 lambdas.  Also update opensource build to ASM 5.0.1.

I'm not confident this will 100% solve every issue... we may need to update cglib also to use OpCodes.ASM5.  Should do some testing w/ AOP over things with default methods & lambdas.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64557004
Suppress compiler errors reported by an error-prone checker ([]) for tests.

I wrote an error-prone checker([]) to check that injected constructors are not annotated with @Inject(optional=true) or with binding annotations. This CL annotates the intentional tests for such cases with @SuppressWarnings.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64575706
Add BoundFieldModule to automatically bind @Bind annotated fields to their
values, reducing test boilerplate.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64668801
Fix external issue 372 -- only scrub the pathInfo if the servletPath actually
began it (not if it just happens to be longer than the servlet path).
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64723867
Fix external issue 755.  Grapher config was wrong.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64724255