First attempt at managed re-connects

Add a new utility that will attempt a re-connect.
On failure, the utility increments the number of connection
attempts and returns; on success, the number of attempts is
reset.
When the (user-supplied) re-connect limit is exceeded, an exception is
thrown, indicating to callers that we should basically just give up.
Add examples/keep_alive.hs
Merge branch 'reconnect-tries' into pu

Conflicts:
	src/MPD/Internal.hs