patch 8.1.0735: cannot handle binary data

Problem:    Cannot handle binary data.
Solution:   Add the Blob type. (Yasuhiro Matsumoto, closes #3638)
diff --git a/src/proto/blob.pro b/src/proto/blob.pro
new file mode 100644
index 0000000..5e457dd
--- /dev/null
+++ b/src/proto/blob.pro
@@ -0,0 +1,13 @@
+/* blob.c */
+blob_T *blob_alloc(void);
+int rettv_blob_alloc(typval_T *rettv);
+void rettv_blob_set(typval_T *rettv, blob_T *b);
+void blob_free(blob_T *b);
+void blob_unref(blob_T *b);
+long blob_len(blob_T *b);
+char_u blob_get(blob_T *b, int idx);
+void blob_set(blob_T *b, int idx, char_u c);
+int blob_equal(blob_T *b1, blob_T *b2);
+int read_blob(FILE *fd, blob_T *blob);
+int write_blob(FILE *fd, blob_T *blob);
+/* vim: set ft=c : */
diff --git a/src/proto/channel.pro b/src/proto/channel.pro
index e11cd3a..0f5b655 100644
--- a/src/proto/channel.pro
+++ b/src/proto/channel.pro
@@ -18,7 +18,7 @@
 void channel_write_new_lines(buf_T *buf);
 readq_T *channel_peek(channel_T *channel, ch_part_T part);
 char_u *channel_first_nl(readq_T *node);
-char_u *channel_get(channel_T *channel, ch_part_T part);
+char_u *channel_get(channel_T *channel, ch_part_T part, int *outlen);
 void channel_consume(channel_T *channel, ch_part_T part, int len);
 int channel_collapse(channel_T *channel, ch_part_T part, int want_nl);
 int channel_can_write_to(channel_T *channel);
@@ -30,7 +30,7 @@
 void channel_close_in(channel_T *channel);
 void channel_clear(channel_T *channel);
 void channel_free_all(void);
-void common_channel_read(typval_T *argvars, typval_T *rettv, int raw);
+void common_channel_read(typval_T *argvars, typval_T *rettv, int raw, int blob);
 channel_T *channel_fd2channel(sock_T fd, ch_part_T *partp);
 void channel_handle_events(int only_keep_open);
 int channel_any_keep_open(void);