Improved *PawnNoncapture

Now the algorithms are branchless
Added testing for double forward pawn moves to isMoveValid

This commit has the positive side effect of also improving the
accuracy of the isMoveValid algorithm in general. Now the difference
between capture and non-capture moves is clearly defined.
It should now be correct in both cases. Before it was focusing
on the non-capture case.