Refactor build to have lb policies as extensions
diff --git a/BUILD b/BUILD
index cd33480..f6f02d2 100644
--- a/BUILD
+++ b/BUILD
@@ -157,6 +157,10 @@
 cc_library(
   name = "grpc",
   srcs = [
+    "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
+    "src/core/ext/lb_policy/pick_first/pick_first.h",
+    "src/core/ext/lb_policy/round_robin/round_robin.h",
     "src/core/ext/transport/chttp2/transport/alpn.h",
     "src/core/ext/transport/chttp2/transport/bin_encoder.h",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.h",
@@ -196,9 +200,6 @@
     "src/core/lib/client_config/client_config.h",
     "src/core/lib/client_config/connector.h",
     "src/core/lib/client_config/initial_connect_string.h",
-    "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
-    "src/core/ext/lb_policy/pick_first/pick_first.h",
-    "src/core/ext/lb_policy/round_robin/round_robin.h",
     "src/core/lib/client_config/lb_policy.h",
     "src/core/lib/client_config/lb_policy_factory.h",
     "src/core/lib/client_config/lb_policy_registry.h",
@@ -258,7 +259,6 @@
     "src/core/lib/json/json_common.h",
     "src/core/lib/json/json_reader.h",
     "src/core/lib/json/json_writer.h",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/lib/security/auth_filters.h",
     "src/core/lib/security/b64.h",
     "src/core/lib/security/credentials.h",
@@ -298,6 +298,10 @@
     "third_party/nanopb/pb_common.h",
     "third_party/nanopb/pb_decode.h",
     "third_party/nanopb/pb_encode.h",
+    "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
+    "src/core/ext/lb_policy/pick_first/pick_first.c",
+    "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
     "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
@@ -345,9 +349,6 @@
     "src/core/lib/client_config/connector.c",
     "src/core/lib/client_config/default_initial_connect_string.c",
     "src/core/lib/client_config/initial_connect_string.c",
-    "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
-    "src/core/ext/lb_policy/pick_first/pick_first.c",
-    "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/lib/client_config/lb_policy.c",
     "src/core/lib/client_config/lb_policy_factory.c",
     "src/core/lib/client_config/lb_policy_registry.c",
@@ -413,7 +414,6 @@
     "src/core/lib/json/json_reader.c",
     "src/core/lib/json/json_string.c",
     "src/core/lib/json/json_writer.c",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/lib/security/b64.c",
     "src/core/lib/security/client_auth_filter.c",
     "src/core/lib/security/credentials.c",
@@ -532,6 +532,10 @@
 cc_library(
   name = "grpc_unsecure",
   srcs = [
+    "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
+    "src/core/ext/lb_policy/pick_first/pick_first.h",
+    "src/core/ext/lb_policy/round_robin/round_robin.h",
     "src/core/ext/transport/chttp2/transport/alpn.h",
     "src/core/ext/transport/chttp2/transport/bin_encoder.h",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.h",
@@ -571,9 +575,6 @@
     "src/core/lib/client_config/client_config.h",
     "src/core/lib/client_config/connector.h",
     "src/core/lib/client_config/initial_connect_string.h",
-    "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
-    "src/core/ext/lb_policy/pick_first/pick_first.h",
-    "src/core/ext/lb_policy/round_robin/round_robin.h",
     "src/core/lib/client_config/lb_policy.h",
     "src/core/lib/client_config/lb_policy_factory.h",
     "src/core/lib/client_config/lb_policy_registry.h",
@@ -633,7 +634,6 @@
     "src/core/lib/json/json_common.h",
     "src/core/lib/json/json_reader.h",
     "src/core/lib/json/json_writer.h",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/lib/statistics/census_interface.h",
     "src/core/lib/statistics/census_rpc_stats.h",
     "src/core/lib/surface/api_trace.h",
@@ -659,6 +659,10 @@
     "third_party/nanopb/pb_common.h",
     "third_party/nanopb/pb_decode.h",
     "third_party/nanopb/pb_encode.h",
+    "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
+    "src/core/ext/lb_policy/pick_first/pick_first.c",
+    "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/transport/alpn.c",
@@ -704,9 +708,6 @@
     "src/core/lib/client_config/connector.c",
     "src/core/lib/client_config/default_initial_connect_string.c",
     "src/core/lib/client_config/initial_connect_string.c",
-    "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
-    "src/core/ext/lb_policy/pick_first/pick_first.c",
-    "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/lib/client_config/lb_policy.c",
     "src/core/lib/client_config/lb_policy_factory.c",
     "src/core/lib/client_config/lb_policy_registry.c",
@@ -771,7 +772,6 @@
     "src/core/lib/json/json_reader.c",
     "src/core/lib/json/json_string.c",
     "src/core/lib/json/json_writer.c",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/lib/surface/alarm.c",
     "src/core/lib/surface/api_trace.c",
     "src/core/lib/surface/byte_buffer.c",
@@ -1360,6 +1360,10 @@
 objc_library(
   name = "grpc_objc",
   srcs = [
+    "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
+    "src/core/ext/lb_policy/pick_first/pick_first.c",
+    "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
     "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
@@ -1407,9 +1411,6 @@
     "src/core/lib/client_config/connector.c",
     "src/core/lib/client_config/default_initial_connect_string.c",
     "src/core/lib/client_config/initial_connect_string.c",
-    "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
-    "src/core/ext/lb_policy/pick_first/pick_first.c",
-    "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/lib/client_config/lb_policy.c",
     "src/core/lib/client_config/lb_policy_factory.c",
     "src/core/lib/client_config/lb_policy_registry.c",
@@ -1475,7 +1476,6 @@
     "src/core/lib/json/json_reader.c",
     "src/core/lib/json/json_string.c",
     "src/core/lib/json/json_writer.c",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/lib/security/b64.c",
     "src/core/lib/security/client_auth_filter.c",
     "src/core/lib/security/credentials.c",
@@ -1539,6 +1539,10 @@
     "include/grpc/impl/codegen/propagation_bits.h",
     "include/grpc/impl/codegen/status.h",
     "include/grpc/status.h",
+    "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
+    "src/core/ext/lb_policy/pick_first/pick_first.h",
+    "src/core/ext/lb_policy/round_robin/round_robin.h",
     "src/core/ext/transport/chttp2/transport/alpn.h",
     "src/core/ext/transport/chttp2/transport/bin_encoder.h",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.h",
@@ -1578,9 +1582,6 @@
     "src/core/lib/client_config/client_config.h",
     "src/core/lib/client_config/connector.h",
     "src/core/lib/client_config/initial_connect_string.h",
-    "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
-    "src/core/ext/lb_policy/pick_first/pick_first.h",
-    "src/core/ext/lb_policy/round_robin/round_robin.h",
     "src/core/lib/client_config/lb_policy.h",
     "src/core/lib/client_config/lb_policy_factory.h",
     "src/core/lib/client_config/lb_policy_registry.h",
@@ -1640,7 +1641,6 @@
     "src/core/lib/json/json_common.h",
     "src/core/lib/json/json_reader.h",
     "src/core/lib/json/json_writer.h",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/lib/security/auth_filters.h",
     "src/core/lib/security/b64.h",
     "src/core/lib/security/credentials.h",