Small simplification in gives_check

Use switch statement also for normal case.

No speed regression.

No functional change.
Use std::count in pos_is_ok()

No functional change.
Merge hash key computation functions

No functional change.
Further merge StateInfo setup functions

No functional change.
Reformat do_castling()

No functional change.
Re-add link time optimization on OS X

In the new version of clang, -O4 does not imply -flto, so we set the
flag
Further work in pos_is_ok()

No functional change.
Use legal positions for endgame initialization

During endgame initialization we get the material
hash key of each endgame forging and ad-hoc position
that in same cases is illegal (leaves teh king under
capture). This is not a problem for the material key,
but rises an assert when SF is run in debug mode with
'testKingCapture' set in pos_is_ok().

So rewrite the code to always produce legal positions.

No functional change.
Depth dependant aspiration window delta

Split delta value in aspiration window so that when
search depth is less than 24 a smaller delta value
is used. The idea is that the search is likely to
be more accurate at lower depths and so we can exclude
more possibilities, 25% to be exact.

Passed STC
LLR: 2.96 (-2.94, 2.94) [-1.50, 4.50]
Total: 20430 W: 3775 L: 3618 D: 13037

And LTC
LLR: 2.96 (-2.94, 2.94) [0.00, 6.00]
Total: 5032 W: 839 L: 715 D: 3478

Bench: 7451319