Send a scheme of http or https as appropriate, rather than grpc.

This requires additional logic to determine whether to send http or
https. This change assumes a default of http, and plumbs down https
through a synthesized channel arg when using the ssl transport.
diff --git a/src/core/channel/http_client_filter.c b/src/core/channel/http_client_filter.c
index 98e26aa..96fa3ec 100644
--- a/src/core/channel/http_client_filter.c
+++ b/src/core/channel/http_client_filter.c
@@ -32,6 +32,7 @@
  */
 
 #include "src/core/channel/http_client_filter.h"
+#include <string.h>
 #include <grpc/support/log.h>
 
 typedef struct call_data { int sent_headers; } call_data;
@@ -130,6 +131,19 @@
   ignore_unused(channeld);
 }
 
+static char *scheme_from_args(const grpc_channel_args *args) {
+  int i;
+  if (args != NULL) {
+    for (i = 0; i < args->num_args; ++i) {
+      if (args->args[i].type == GRPC_ARG_STRING &&
+          strcmp(args->args[i].key, "grpc.scheme") == 0) {
+        return args->args[i].value.string;
+      }
+    }
+  }
+  return "http";
+}
+
 /* Constructor for channel_data */
 static void init_channel_elem(grpc_channel_element *elem,
                               const grpc_channel_args *args, grpc_mdctx *mdctx,
@@ -146,7 +160,8 @@
   /* initialize members */
   channeld->te_trailers = grpc_mdelem_from_strings(mdctx, "te", "trailers");
   channeld->method = grpc_mdelem_from_strings(mdctx, ":method", "POST");
-  channeld->scheme = grpc_mdelem_from_strings(mdctx, ":scheme", "grpc");
+  channeld->scheme =
+      grpc_mdelem_from_strings(mdctx, ":scheme", scheme_from_args(args));
   channeld->content_type =
       grpc_mdelem_from_strings(mdctx, "content-type", "application/grpc");
 }