Add a ForkJoin-based ParallelFor algorithm to the ThreadPool module
What does this implement/fix?
This merge request implements a ForkJoin-based ParallelFor algorithm for executing unary and binary functions in parallel. It contains two commits. The first commit modifies Eigen's ThreadPool API to make the underlying task assignment logic public (required for the algorithms). The second commit implements the ParallelFor algorithms and adds tests.
Additional information
The ForkJoin algorithm itself is based on the following paper:
Lea, D. (2000, June). A java fork/join framework. In Proceedings of the ACM 2000 conference on Java Grande (pp. 36-43).
All Eigen tests pass on Debian GNU/Linux 6.10.11 when invoking make -j4 check inside the CMake build directory.