patch 8.1.1303: not possible to hide a balloon

Problem:    Not possible to hide a balloon.
Solution:   Hide the balloon when balloon_show() is called with an empty
            string or list.  Add balloon_gettext().
diff --git a/src/gui_beval.c b/src/gui_beval.c
index e1e093f..f4309b8 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -117,7 +117,8 @@
 	beval->appContext = XtWidgetToApplicationContext((Widget)target);
 #endif
 	beval->showState = ShS_NEUTRAL;
-	beval->msg = mesg;
+	vim_free(beval->msg);
+	beval->msg = mesg == NULL ? NULL : vim_strsave(mesg);
 	beval->msgCB = mesgCB;
 	beval->clientData = clientData;
 
@@ -208,8 +209,9 @@
     void
 gui_mch_post_balloon(BalloonEval *beval, char_u *mesg)
 {
-    beval->msg = mesg;
-    if (mesg != NULL)
+    vim_free(beval->msg);
+    beval->msg = mesg == NULL ? NULL : vim_strsave(mesg);
+    if (beval->msg != NULL)
 	drawBalloon(beval);
     else
 	undrawBalloon(beval);
@@ -225,6 +227,7 @@
     void
 gui_mch_unpost_balloon(BalloonEval *beval)
 {
+    VIM_CLEAR(beval->msg);
     undrawBalloon(beval);
 }
 #endif
@@ -975,6 +978,7 @@
 	gtk_widget_show(beval->balloonShell);
 
 	beval->showState = ShS_SHOWING;
+	gui_mch_update();
     }
 }