First implementation for multi-threaded of samoa on local machine
1. The number of threads used in the main Engine is specified in samoa-local.properties
2. ParallelMasterProcessingItem creates multiple ParallelWorkerProcessingItem and pass ContentEvents to the worker
3. The workers are allocated to the threads (in the pool) in a way that a worker (and its processor) will be allocated to only one thread during the whole
process to ensure linearizability in the context of 1 Processor
Clean up some code
Some unit tests for Master, Worker PIs and ProcessingTask