Restore the Functor to the original implementation, as OpenMP was broken.

While TBB was passing the functor by value and creating multiple copies of
the functor, OpenMP was passing the functor by reference and caused
multiple threads to write to the same global memory addresses.
Merge branch 'correct_open_mp_problems'