WorkerPool: Move worker logic into a new class

Change-Id: I5b8e548e1041f5524f790ccb34aa1ef5742dbd62
WorkerPool: Add watcher thread to manage worker threads

Change-Id: I7fb0d03d504d32249c96d83bb7224bfeaddf3b24
WorkerPool: Spawn a new thread if workers are blocked

Change-Id: I0ad9e757d1d746148a77c918567cb33bd75989c0