Add SubstructureRedirectMask, adapt functions.

Upon a XConfigureWindow() or XMapWindow(), those should get called now
in order to be able to adjust the window's properties.

Currently the request is just forwarded 1 to 1, so there is no kind of
"optimisation".
maprequest() now preconfigures new windows...

... which results in heavily reduced flickering!
However there are lots of warning messages appearing upon start (mostly
because stwm finds windows from the previous session, God knows why).
Make stuff work and halfway properly.

... although doing things properly gets back the slight flickering when
creating a new terminal window. *sigh*

There are warning messages at the beginning, don't know what causes
them, can't remember having seen them before, need to check what's the
difference between 'master' and 'request'.
Fix startup scan() (and general map issues).

Fix movews(), where only the current workspace got swapped.
Make stwm less "flickery"; make constants CONSTANTs.

If one calls XResizeWindow() on a terminal emulator window, it first
adapts its size to the number of rows/columns rather than keeping the
specified pixel size, which is fine (and even welcome) for a floating
terminal window, but leaves ugly gaps in a tiled layout.

Each call to XResizeWindow() will cause an XConfigureEvent that holds
the client's new window dimensions; this can be used to check the client
dimensions and fix them if necessary.

This has been the way to solve the resize issue until now, but it has
been replaced for two reasons:

* Once we get an XConfigureEvent, this means the window has already
  changed its size and is displayed on the screen. An immediate call to
  XResizeWindow() as a reaction to the event may indeed fix the size,
  yet does not prevent the window to show in its "wrong" dimensions in
  the first place; these subsequent resize events are perceived as a
  "flickering", which is quite unfavourable.

* Besides the flickering, it is a waste of performance: the client is
  displayed in its "wrong" size before getting resized and re-displayed
  instead of just skipping the first step.

An idea to prevent this was to immediately send a second XResizeWindow()
after the initial one, however any subsequent resize attempt beyond the
first one seems to get completely ignored until the client finally
configures itself and causes an XConfigureEvent (I HAVE NO CLUE WHY).

Another idea was to enable the SubstructureRedirectMask and to intercept
the client configuration upon an XConfigureRequestEvent, where we would
call an XResizeWindow() instead of forwarding the request to an
XConfigureWindow(). However this prevents the terminal window from
getting configured in the first place, which means that the rows/columns
won't get updated, and the window stays blank.

A quick glimpse to the dwm code revealed that terminal clients do not
try to adapt the window size to the rows/columns if they get configured
by an XSendEvent() with an XConfigureEvent (instead of a normal
XConfigureWindow()) (I HAVE NO CLUE WHY).

OTHER CHANGES:
* Constant values are now macros and their names written in uppercase.
* Colour definitions (and config.h in general) are cleaned up.
Merge branch 'request'.

Removes the flickering on clients caused by unnecessary resizing, by
adding the SubstructureRedirectMask to the root window and intercepting
"wrong" resize attempts of terminals.

Other clean-up.