Sync from internal google version control via Moe

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.  
  * this build has code/processors which is entirely workable (we've started to migrate folks to it internally) but it needs some love in open-source related to the build and packaging, scoping works but scope validation is not yet in place.  Definitely pre-alpha use-at-own-risk.