Cleanup z-msg.c/h and improve C++ correctness

Does not break savefile compatibility.

Converts the anonymous MSG_* enum into a named type (MSG is already
used).

Note that 'memorised' is the UK spelling.  Left it alone.