Implement thread pool, use concurency

Process files simultaneously using thread pool. Preserve the order by using OrderedLogger.