atexit() for cleanup() so fatal() can be called anywhere
dont need global 'run' variable anymore
cc optimization level in Makefile
Message handling overhaul, first pass. Lots of changes