AsyncAppender now flushes log events when the application shuts down

* async appender workers are no longer daemon threads so they can flush
  partially buffered events to their delegates before stopping
* SLF4J request log stops the appenders when it's closed
* configured command stops the appenders when the execution finishes
* configured commands that execute asynchronously (e.g. ServerCommand)
  must now call cleanup when they finish execution