Chain (instead of copy-construct) SetBindings.  Also, extract a BindingMap that treats SetBindings as first-class and sets them aside.

This reduces the amount of scanning we have to do on plus(), since large graphs repeatedly instantiated (say, per request) build up a lot of overhead for each scan

This requires a breaking change in the code-generation of ModuleAdapter subclasses such that they take BindingGroup instead of Map<String, Binding<?>> and call the right method.  The call out allows for no extra work to be done to track the set bindings and keep them for fast use in .plus().

In internal testing at Google, with large (500+) numbers of set-bindings contributions and a .plus() per server request, we shaved off 2% of request latency with this change as compared to the previous fix to Setbindings. YMM.

This change also adds some refactoring of the internals - a bit of clean-up which needs to be completed in another pull.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=59228595

Conflicts:
	compiler/pom.xml
Fixes from pull request review in square/dagger#373.
Merge pull request #373 from cgruber/fasterplusgraph

Improve performance of .plus() under large volumes of contributed SetBindings.
Switch Queue to better performing Deque.
Merge pull request #374 from square/jw/deck

Switch Queue to better performing Deque.
Switch Android example to use addsTo for a complete module.
Use a simpler means of installing the Android SDK.
Merge pull request #375 from square/jw/complete

Switch Android example to use addsTo for a complete module.
Merge pull request #376 from square/jw/travis

Use a simpler means of installing the Android SDK.
Do not mask underlying exception message when binding.

This change surfaces the exception message from the underlyng cause of a failure to fetch bindings. Prior to this, we assumed that all exceptions were due to overrides being unable to contribute set bindings.
Merge pull request #383 from square/jw/surface-message

Do not mask underlying exception message when binding.
fixed compile issue: Caused by: java.lang.ClassNotFoundException: com.android.sdklib.AndroidVersion$AndroidVersionException

at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:130)
... 20 more
Caused by: java.lang.NoClassDefFoundError:
com/android/sdklib/AndroidVersion$AndroidVersionException
at
com.jayway.maven.plugins.android.AbstractAndroidMojo.getAndroidSdk(AbstractAndroidMojo.java:1150)
at
com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.generateR(GenerateSourcesMojo.java:547)
at
com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.execute(GenerateSourcesMojo.java:211)
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
... 20 more
Caused by: java.lang.ClassNotFoundException:
com.android.sdklib.AndroidVersion$AndroidVersionException
at
org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)
... 24 more
Merge pull request #386 from qxo/master

fixed compile issue: Caused by: java.lang.ClassNotFoundException: com.an...
Add an ArrayQueue (trimmed ArrayDeque from Android) and use it in Linker to restore Android API 8 (Java5) compatibility. Add animal-sniffer to ensure it.
Merge pull request #389 from cgruber/reverttojava5

Add an array-backed Queue and use it in Linker to restore Java5 compatibility.
Initial shape of the scope constraint support.
Add in more tests.
bump compile_testing to snapshot