Improve the testing of isMoveValid

isMoveValid should reject sliding moves that jump over blocking pieces.
Every sliding piece is tested moving to every square on a valid path
jumping over every possible piece acting as a blocker.

A couple of other changes made it into this commit
 - Started using an alias 'Index' instead of size_t for array indexing
   The reason is size_t is signed but indexing should be unsigned.
   This helped with a problem in the looping of the above testing code.
 - Simplified the calculation of the filter board calculation in
   isMoveValid
 - Fixed bugs in the valid destination collection definitions