Add back OFThreadPool

While something similar can be achieved by spawning OFThreads and
dispatching to their run loops, this means dispatching work to a
specific thread, while OFThreadPool will create a pool of threads and
not assign any job to a specific thread - instead, the first thread to
become ready will pick up the next job until there's no work left.