Changed the flush mechanism per discussion with Ceki to flush in the
stop method instead of via a shutdown hook. This removes the need for a
shutdown idle timeout on the queue. The maxFlushTime becomes the timeout
on the call to worker.join.

Calling LoggerContext.stop now waits for all AsyncAppenders to finish
flushing (or to timeout) before returning. This should cover most
use-cases for AsyncAppender. Cases not covered include non-deterministic
JVM shutdown (where user code does not terminate the JVM) or when
shutdown hooks need to log events (Logback may have already exited
before shutdown hook execution).