De-multithreaded, optimized everything

As it turns out java methods of handling synchronized and volatile data
is rather slow, and used often enough for the added overhead to be more
significant than any improvement due to multithreaded adds to a binary
tree. I’ve also decided that, as long as I simply have one other thread
finding errors, it’ll usually finish before the printing thread, so
there is only one error finding thread.