Added size to WinMsgBuf; will be used for bound checking
Global winmsg is now dynamically allocated using wmb_create

This is a temporary implementation as a single step in a larger refactoring;
ultimately, a pre-allocated WinMsgBuf will be passed into the function.
Added wmbc_printf

WARNING: Note that this function currently does exactly as the code it replaces;
unfortunately, this means that it is vulnerable to buffer overflows. This will
be fixed in the following commits.
WinMsgBuf buffer is now dynamically allocated

This will permit resizing rather than introducing artifical constraints on the
character limit, which is dangerous in an age of high-resolution widescreen
monitors, configurable font sizes, and multi-byte encodings.
[SECURITY FIX] wmbc_printf now protects against buffer overflows by dynamically expanding the size of the buffer

C99 introduced *snprintf functions that limit the number of characters written
to a buffer; prior to this change, portions of MakeWinMsgEv (and the functions
it calls) were vulnerable to buffer overflows.

I am uncertain why the #define is required at the moment; this will need to be
discussed, as I'm unsure why vsnprintf is being replaced with xvsnprintf as it
is (gcc -E yields nothing).