Sync out sources from internal Google.

Notes: 

  * one non-synced change - disabling the invoker tests and updating the compiler pom to point at the new location of the legacy processors.
  * this build will be odd, in that it has both dagger2 and dagger1 code in it, and so you have to add the mandatory "library=true" and "complete=false" to any modules because the dagger1 processors will get angry if you don't.  Dagger2 doesnt' care, but both processors are in the project still.  When I get back from holiday I'll strip out these (we still use them internally during our migration) in a safe way so the open-source project doesn't deal with any of this.