Split HasBindingExpressions into GeneratedComponentModel and ComponentBindingExpressions.

Make SingleBindingExpression a subclass of BindingExpression for one binding, so that ComponentBindingExpressions can be a composite BindingExpression.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165367432
diff --git a/java/dagger/internal/codegen/SubcomponentBuilderBindingExpression.java b/java/dagger/internal/codegen/SubcomponentBuilderBindingExpression.java
index 53fd28b..1e87fe7 100644
--- a/java/dagger/internal/codegen/SubcomponentBuilderBindingExpression.java
+++ b/java/dagger/internal/codegen/SubcomponentBuilderBindingExpression.java
@@ -19,6 +19,7 @@
 import com.squareup.javapoet.ClassName;
 import com.squareup.javapoet.CodeBlock;
 
+/** A binding expression for a subcomponent builder that just invokes the constructor. */
 final class SubcomponentBuilderBindingExpression extends SimpleInvocationBindingExpression {
   private final String subcomponentBuilderName;
 
@@ -28,7 +29,8 @@
   }
 
   @Override
-  CodeBlock getInstanceDependencyExpression(DependencyRequest request, ClassName requestingClass) {
+  CodeBlock getInstanceDependencyExpression(
+      DependencyRequest.Kind requestKind, ClassName requestingClass) {
     return CodeBlock.of("new $LBuilder()", subcomponentBuilderName);
   }
 }