Simplifies main() so that it is responsive to signals.

With the prior implementation cleanup would never run on SIGINT or
SIGTERM.
Merge remote-tracking branch 'upstream/master'
less leaks
fix the issue with randr
resolve uninitialized value problem
We will always run exit and cleanup  unless run() completely blows up.

cleanup() should then exit with a code but if it doesn't, that is an error
case so indicate failure.
Turn cleanup into an atexit() handler
Exit in fewer places
Use abort() instead of pretending.
Merge remote-tracking branch 'origin/master'
Simplifies main() so that it is responsive to signals.

With the prior implementation cleanup would never run on SIGINT or
SIGTERM.
Merge branch 'exitcodes'

Spent some time crashing 2bwm and ensuring cleanup is more reliably run.

Conflicts:
	2bwm.c
Merge branch 'master' of github.com:maxrp/2bwm
Merge pull request #14 from maxrp/master

Turn cleanup() into an atexit() handler, simplify signal registration, exit with sigcode