add CompletionTimeService abstraction: an interface to the GCT related components that hides everything behind a very simple interface
add two implementations of CompletionTimeService (and related tests): one naive & synchronized (faster with small amount of cores), one with separate thread and message queue (need to test on machine with many cores)
remove QueueWrapper - was only used temporary for debugging purposes