Introduce distance() and unify some API

Original work by Lucas.

No functional change.
Assorted code-style triviality

No functional change.
Retire pvMove in search()

Now we can directly replace it with
the definition resulting in simpler
and possibly faster code because
PvNode is evaluated at compile time.

No functional change.
Fix bounds of FutilityMoveCounts

This is a left-over from ONE_PLY == 2.

No functional change.

Resolves #107
Profile Build with Hash=16

16 is the default hash, used by stockfish bench, so it makes sense to use it
for profile build. Using a different hash means that people see a different
signature when doing a profile build, which, even if it's not a bug, may be
surprising.

No functional change.