* wm_strdup: allocate with 4 extra chars' space, so that
LoadConfig can append chars as it sees fit.
* WM_LoadConfig: replace a few malloc+strcpy calls with
wm_strdup, remove two realloc calls, now that wm_strdup
provides the extra room we need: these changes reduce the
allocations count by 100++.
* WM_LoadConfig: where relevant, check for line_token[1]
pointer for null first and emit a different syntax error
message with WM_ERR_INVALID_ARG instead of WM_ERR_MEM.
* WM_LoadConfig: restrict new_config to its own context.
* WM_LoadConfig: revise a few error messages.