Transport/call flow control interface

Allow call objects to advertise how many bytes they are currently
willing to receive.

Update the transport to utilize this data to update flow control
windows.
diff --git a/src/core/transport/transport.h b/src/core/transport/transport.h
index 7f60fdc..98fcbe7 100644
--- a/src/core/transport/transport.h
+++ b/src/core/transport/transport.h
@@ -74,6 +74,12 @@
 
   grpc_stream_op_buffer *recv_ops;
   grpc_stream_state *recv_state;
+  /** The number of bytes this peer is currently prepared to receive.
+
+      Bytes offered are used to replenish per-stream flow control windows.
+      Offers are not retractable: if 5 bytes are offered and no bytes are read,
+        a later offer of 3 bytes still implies that 5 have been offered. */
+  gpr_uint32 max_recv_bytes;
   void (*on_done_recv)(void *user_data, int success);
   void *recv_user_data;