Prefactoring for custom binding methods
Prefactoring for custom binding methods

- Collect binding methods in their own step, and then process them separately. This allows for one derived collection to be inlined and discarded after it is used, and allows other derived collections to be immutable. The immutability point helped uncover one area in which we modified a collection that was passed as a parameter in a way that was not documented.
  - Collecting them separately will simplify the process when we add custom binding methods in a upcoming CL
- Index the multimaps of methods by name using the Name interface instead of String. Calling toString() creates an unnecessary copy, and the Name interface supports equals() and hashCode().

Github issue: https://github.com/google/dagger/issues/869

RELNOTES=n/a

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=254810191

ze-pequeno/dagger,ze-pequeno/dagger,google/dagger,google/dagger,cgruber/dagger,cgruber/dagger,dushmis/dagger,ze-pequeno/dagger,dushmis/dagger,google/dagger,google/dagger,ze-pequeno/dagger,cgruber/dagger