Move split() under Thread

Previous renaming patch suggested this reformat:
when a better naming leads to a better code!

No functional change.
Derive ThreadPool from std::vector

Prefer sub-classing to composition in this case.

No functional change.
Slightly change split() API

This function "returns" two values: bestValue and bestMove

Instead of returning one and passing as pointer the other
be consistent and pass as pointers both.

No functional change.
Merge remote branch 'upstream/master' into all_cut
Pass allNode through splitpoints