Refactor: move the threads to their own package, output thread now using
a java LinkedBlockingDeque instead of the custom queue that was created.
Added: a new messge compactor that removes duplicate messages out of the
queue every second to help prevent spamming (off by default)