patch 8.1.0802: negative index doesn't work for Blob

Problem:    Negative index doesn't work for Blob.
Solution:   Make it work, add a test. (closes #3856)
diff --git a/src/blob.c b/src/blob.c
index a954030..9dc7926 100644
--- a/src/blob.c
+++ b/src/blob.c
@@ -72,8 +72,12 @@
 	int  len = from->vval.v_blob->bv_ga.ga_len;
 
 	if (len > 0)
+	{
 	    to->vval.v_blob->bv_ga.ga_data =
 			    vim_memsave(from->vval.v_blob->bv_ga.ga_data, len);
+	    if (to->vval.v_blob->bv_ga.ga_data == NULL)
+		len = 0;
+	}
 	to->vval.v_blob->bv_ga.ga_len = len;
     }
     return ret;
@@ -112,7 +116,7 @@
  * Get byte "idx" in blob "b".
  * Caller must check that "idx" is valid.
  */
-    char_u
+    int
 blob_get(blob_T *b, int idx)
 {
     return ((char_u*)b->bv_ga.ga_data)[idx];