patch 8.1.0743: giving error messages is not flexible

Problem:    Giving error messages is not flexible.
Solution:   Add semsg().  Change argument from "char_u *" to "char *", also
            for msg() and get rid of most MSG macros. (Ozaki Kiichi, closes
            #3302)  Also make emsg() accept a "char *" argument.  Get rid of
            an enormous number of type casts.
diff --git a/src/digraph.c b/src/digraph.c
index 8a46b5b..407b45f 100644
--- a/src/digraph.c
+++ b/src/digraph.c
@@ -2218,18 +2218,18 @@
 	char2 = *str++;
 	if (char2 == 0)
 	{
-	    EMSG(_(e_invarg));
+	    emsg(_(e_invarg));
 	    return;
 	}
 	if (char1 == ESC || char2 == ESC)
 	{
-	    EMSG(_("E104: Escape not allowed in digraph"));
+	    emsg(_("E104: Escape not allowed in digraph"));
 	    return;
 	}
 	str = skipwhite(str);
 	if (!VIM_ISDIGIT(*str))
 	{
-	    EMSG(_(e_number_exp));
+	    emsg(_(e_number_exp));
 	    return;
 	}
 	n = getdigits(&str);
@@ -2446,7 +2446,7 @@
  * used when setting the option, not later when the value has already been
  * checked.
  */
-    char_u *
+    char *
 keymap_init(void)
 {
     curbuf->b_kmap_state &= ~KEYMAP_INIT;
@@ -2487,7 +2487,7 @@
 	    if (source_runtime(buf, 0) == FAIL)
 	    {
 		vim_free(buf);
-		return (char_u *)N_("E544: Keymap file not found");
+		return N_("E544: Keymap file not found");
 	    }
 	}
 	vim_free(buf);
@@ -2513,7 +2513,7 @@
 
     if (!getline_equal(eap->getline, eap->cookie, getsourceline))
     {
-	EMSG(_("E105: Using :loadkeymap not in a sourced file"));
+	emsg(_("E105: Using :loadkeymap not in a sourced file"));
 	return;
     }
 
@@ -2552,7 +2552,7 @@
 		    || *kp->from == NUL || *kp->to == NUL)
 	    {
 		if (kp->to != NULL && *kp->to == NUL)
-		    EMSG(_("E791: Empty keymap entry"));
+		    emsg(_("E791: Empty keymap entry"));
 		vim_free(kp->from);
 		vim_free(kp->to);
 	    }