Improved implementation of MultiThreadedJLanguageTool

Goals:
- JLanguageTool must not know about multi-threading
- JLanguageTool should never spawn an ExecutorService, even though it's single-threaded, because it'll still spawn a new thread
- configurable thread pool size