remove -UMOUSE support
refactor: moveresize() into moveresize() and moveresizeraise()

Sometimes we need a helper that performs a move/resize but doesn't
raise the window.
maximise: allow horizontal maximization with shift modifier

Modify the vertical maximise command to act horizontally in presence
of Shift modifier.
fix: race condition when unmapping windows causing unmaged windows.

When unmapping multiple windows, it was possible for the multiple
clients to be unmapped at once, the batch of events denoting unmapping
can include enter events.  Evilwm handles each event in turn without
any look-ahead, so blindly calls XSetInputFocus on a window that has
been unmapped (forwich the enter event is out-of-date).

This bug was spotted with a dock and a window a tool on the dock created.
It should be possible with vdesk switching too.

The trivial fix is to ignore Xerrors for such a trivial error, rather
than disowning the client.
fix: allow unknown options in .evilwmrc

Log a warning when encountering an unknown option, but don't abort
parsing.
xrandr: re-arrange windows when screen is resized

Resizing the root window can cause some clients to become off-screen
and maximised clients to have incorrect dimensions.

On XRandR resize notification, move all clients such that:
 - any maximized clients are maximized correctly
 - any non-maximized dimension is located in the same proportional
   position on the new screen size to the old.
xrandr/ewmh: update hints about workspace dimension on xrandr event

Refactored desktop- geometry, viewport and workspace hints to be set
from a single function.  Allows calling when handling the xrandr
event.
refactor window annotation functions to seperate file

Adds support for doing runtime pick'n'mix of window annotations for
sweep/drag/info.

Eg, infobanner and infobanner_resize need not be a compile time extra
annotations: add window outline method using XShape

Drawing window outlines with previous xor_outline methods require
grabbing the X server, precluding client applications from updating
(and eventually blocking).  This is undesirable especially for
media players.

Using XShape allows for drawing a window with a missing middle, ie, an
outline that doesn't require grabbing the X server.
annotations: add support for rendering utf8 _NET_WM_NAME

Currently requires pango&xft support for good rendering.
vdesk: unify code by removing VWM macro guard

Remove the need for a VWM preprocessor guard -- force vdesk decisions to be
always evaluated.  setting -UVWM now:
 - sets VDESK_MAX to 0, so there are no other vdesks
 - doesn't add the VWM related keyboard shortcuts to the grab list

Ie, users should not see a difference behaviour wise.

This also removes some old code that i don't believe works correctly
in cases of -UVWM
vdesk: make num_vdesks a user option

The only purpose of the VWM preprocessor guard is to stop grabbing
keys related to vdesk operations.
vdesk: allow XP_9, XP_0 to access vdesks 9, 10
behaviour: don't tab to windows with _NET_WM_WINDOW_TYPE_DOCK

I find it quite irritating having docks in the tabbing order.  Ciaran
isn't quite sure.  This may be reverted in the future.
main: refactor display setup

Split long function into setup_display and setup_screens
pre-multiphy: make client co-ordinates relative to physical-screen origin

To allow conceptually simpler multiphy integration:
 - rename Client.{x,y} as Client.{nx,ny} to signify the change in
   meaning
 - New macro client_to_Xcoord() allows conversion from phy
   co-ordinates to screen co-ordinates
 - New macro client_from_Xcoord() allows conversion from screen-coordinates
   to phy coordinates (of the phy the client believes it is on)
 - New function client_update_screenpos() allows setting client
   co-ordinates from screen co-ordinates
 - Some functions need to work in screen co-ordinates, modify these to
   use variables *screen_{x,y} rather than *{x,y}
multiphy: support multiple physical screens per (x)screen

Introduce ability to use Xinerama/XRandR for screens with multiple
physical displays.  Behaviour should be as if the xserver had an
(x)screen per physical screen, except that clients can be moved between
the physical screens.

Clients belong to a particular physical screen (Client.phy), which is
determined by which physical screen contains the Client's centre of gravity.

This allows:
 - y,u,b,n client movement relative to the physical display
 - x,= (maximisation) resizes reslative to the physical display

NB, this patch doesn't include display discovery
xinerama: Enable building with xinerama support
multiphy: add generic screen layout discovery
multiphy: add xrandr screen layout discovery