Added a net::BidirectionalStream to expose a bidirectional streaming interface

This CL adds a BidirectionalStream on top of SpdyStream to
expose a bidirectional streaming interface. This CL also
modifies HttpStreamFactoryImplJob to create BidirectionalStream.

BUG=516342

Review URL: https://codereview.chromium.org/1326503003

Cr-Commit-Position: refs/heads/master@{#366541}
diff --git a/net/BUILD.gn b/net/BUILD.gn
index df60546..1b8b55f 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -46,6 +46,7 @@
 declare_args() {
   # Disables support for file URLs.  File URL support requires use of icu.
   disable_file_support = false
+  enable_bidirectional_stream = false
 }
 
 config("net_config") {
@@ -59,6 +60,9 @@
   if (disable_ftp_support) {
     defines += [ "DISABLE_FTP_SUPPORT=1" ]
   }
+  if (enable_bidirectional_stream) {
+    defines += [ "ENABLE_BIDIRECTIONAL_STREAM=1" ]
+  }
 }
 
 # net_internal_config is shared with net and net_small.
@@ -423,6 +427,10 @@
       sources += gypi_values.net_ftp_support_sources
     }
 
+    if (enable_bidirectional_stream) {
+      sources += gypi_values.net_bidirectional_stream_sources
+    }
+
     if (enable_websockets) {
       sources += gypi_values.net_websockets_sources
     }
@@ -1528,6 +1536,9 @@
     ]
   }
 
+  if (!enable_bidirectional_stream) {
+    sources -= [ "http/bidirectional_stream_unittest.cc" ]
+  }
   if (!enable_built_in_dns) {
     sources -= [
       "dns/address_sorter_posix_unittest.cc",