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.