Some renaming in split()

Naming suggested by jundery.

No functional change.
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.
Add const qualifer to check_is_dangerous

No functional change.
Rename posKey stored in the transposition table

[Edit: Slightly extended by me]

No functional change.
Change slave_available() API

To return a pointer to the available
thread instead of a bool. This allows
to simplify the core loop in split().

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
Add KBPKP endgame

It is a draw if pawns are on G or B files, weaker pawn is
on rank 7 and bishop can't attack the pawn.

No functional change (because it is very rare and does not appear in bench)
Merge with master
Merge with master