News/Readme updates (including making them github-friendlier)
Add runM variant which takes a blocking call

This allows monitors to define update times other than time-based.
Add a blocking call for MPD based on events
Add the AutoMPD monitor
xmobar.cabal: allow stm-2.4 and mtl-2.1

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
xmobar.cabal: port to libmpd-0.8.

Now all values are returned as 'Value' wrapped entries.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Merge remote-tracking branch 'trofi/master'
Nit in StatFS
Merge remote-tracking branch 'math/dev/mpd-idle' into mpd

Conflicts:
	xmobar.cabal
Bit of news and version bump
Fixes for DiskU, which was exploding on recent Linux

We're using now the recommended statvfs interface, instead of the
obsolete statfs64.  Moreover, we compute correctly the used space.
Correct reference to normal color option.

The description for -L should refer to -n (normal color), not -m
(minimum width).
Remove 2nd default value from description of -L.
BufferedPipeReader: A plugin for temporary data display

This plugin allows to display data from multiple pipes.
New data will always overwrite the currently displayed data.
However, if a timeout is specified, the previous content is restored.

Configuration works like this:
BufferedPipeReader <Alias> [ ( Timeout, "/path/to/fifo/pipe" ), (..), .. ]

If Timeout is set to 0 then the content is persistent, i.e. it will be
reset to any previous value, it will itself become the previous value.

If Timeout is set to a negative value the earth will stop spinning, so
don't do it.
Modularize Window handling functions

These functions are about creation, positioning and property setting of
the xmobar window. An own module does them justice and eases the task of
adding functions for revealing/hiding and toggling the window.
Move signal handler and data types to own module

This is necessary to make SignalType available for other modules without
import loops. This also decoupels the modules and their functionality a
bit more so this is generally a cleaner solution.
Add signals for {show,hid,toggl}ing

Also make them {Read,Show}able which can be useful for printf debugging
and does not hurt otherwise.
Extend the interface so that plugins can send signals

Also: realign methods to look pretty again.
Create signal handler in main and pass it down to the start* functions

This is necessary for setting up the signal callback (trigger) from the
Plugin interface. As another benefit it is now possible to implement the
lowerOnStart config option properly by simply sending a Hide signal in
startLoop.
Add functions for {reveal,hid,toggl}ing the window

Toggling is based is based on the current window status. If unmapped
then reveal else hide.

Sync is necessary or delays might occur.

The functions are called from the event loop when the according signal
is received

When mapping (revealing) the window again we need to set the struts
property again. The easiest way to do this is to call repositionWin.
However, repositionWin needs access to the Config structure which is
available in eventLoop.

Because decomposition wouldn't be easy and I don't want to pass Config
down to showWindow (which would need to return the new Rectangle then)
this is done here.