Make ThreadTaskPool::invoke accepting non-void returning function and returning future<T>.
ThreadTaskPool::invoke becomes asynchronous by this commit, but will provide much flexible thread operation.