Rework color handling and drawing

This replaces the two existing color parsers with a single, different
one. This parser has the same functionality as the parser previously
used by PARSE-COLOR-STRING, in that it turns a string with color codes
into a list of strings and lists of "modifiers", such as (:fg 1) to set
the foreground color to color 1. This parser, however, also supports
including those lists directly in the string. For example:

"Hello ^(:fg 1)World"

would result in a list like '("Hello " (:fg 1) "World").

The rendering code now also uses the output of this new parser, instead
of having its own. The modifiers are passed through the generic function
APPLY-COLOR, which has methods for all of the existing modifiers.
The current rendering state, such as the colors, whether brightness is
enabled, etc, is now stored in the color context object. The different
methods on APPLY-COLOR apply their changes to the instance of CCONTEXT.
Clean up font rendering code

If DRAW-IMAGE-GLYPHS is passed a font, it should also use that font.

Also add a few declarations to silence a bunch of warnings on
compilation.
Add multiple font support

This adds a ^f<n> modifier to switch to the font at N in the screen's
list of fonts. SET-FONT is changed to support specifying a list of fonts
instead of just one.

As an example, it's now possible to place this in your .stumpwmrc:

(set-font '("9x15bold"
            "-*-comic sans ms-medium-*-*-*-*-*-*-*-*-*-*-*"))

Then you could set *STARTUP-MESSAGE* to "Hello ^f1Comic Sans", which
would result in "Hello " being rendered in the default font, and "Comic
Sans" being rendered in Comic Sans MS. The height of each line of output
is determined by the tallest font used on it, and the rendering code
will try to center each piece of text on a line vertically.
Also use group top-maps in SYNC-KEYS, fixes #87

Because SYNC-KEYS passed a window's screen to XWIN-GRAB-KEYS, the
bindings in the top maps of groups were ignored.
Merge pull request #109 from jorams/group-top-maps

Also use group top-maps in SYNC-KEYS, fixes #87
Fix color stack popping

The color stack wasn't popping colors correctly, which could result in
StumpWM crashing.
Remove debug statements.
Fix only setting the background color.

The FOREGROUND variable will not have been set to :RESET, but will be
*, so it should match that.
Support multiple X selection types

Generalize the selection handling system, adding the ability to get and
set the clipboard selection instead of just the primary selection. The
changes also open up the ability to use the secondary selection, but
that one is pretty much never used.

Note that this changes the functionality of the exported
symbol *X-SELECTION* by turning it into a property list.
Clean up selection support
Use the same gravity calculation everywhere

This also enables the use of :top, :bottom, :left and :right gravity for
the message and input window.
Split the functionality of RENDER-STRINGS

RENDER-STRINGS did too much and was a bit of a monster. I split off some
parts, making it easier to understand.
Push font onto color stack
Properly calculate height of the mode line
Merge pull request #112 from jorams/clipboard-selection

Support multiple X selection types
Merge pull request #113 from jorams/unify-gravity

Use the same gravity calculation everywhere
Make highlighting in the mode line configurable
Merge pull request #114 from jorams/mode-line-highlight

Make highlighting in the mode line configurable
Floating group: base current head on window

Instead of always returning the first head on the screen as the current
one, it makes more sense to instead return the head on which the current
window resides.
Decouple mouse focus policy from clicking root

When *MOUSE-FOCUS-POLICY* was :SLOPPY it was impossible to focus an
empty frame using the mouse. There doesn't seem to be a real reason for
coupling the root click behavior and the mouse focus policy.