Split() clean up locking

Only unlock and relock when idle_loop() is actually called

No functional change
Remove strange use of the ternary operator

Note that we read shared data without lock
protection, so code is theoretically prone to
torn reads. But, first splitPoint pointer
never changes, and alpha is of integer type so
it is read in a single DWORD access.

No functional change.
Rename sp to splitPoint

Still keep 'sp' name when used as local
variable with limited scope.

From Jundery.

No functional change.
Merge remote-tracking branch 'upstream/master' into easy_move
Remove depth >= 16 condition