Start to combine the test data for move generation
Next step in combining the movegen testing

As of DMD 2.064 it is not possible to create an associative array
using a simple literal at the module level. So a workaround using
tuples is employed.
Make code folding work better
Make it clear these tests do not exist yet
Remove the old move gen test data collections
Improve the tests for MoveList
Fix the iteration API for MoveList
Fix the serialization of MoveList
Added a Bidirectional Range API to MoveList

This seems like it should make MoveList work with std.algorithm.sort
but swap still will not work. In particular, std.range.hasSwappableElements
returns false because MoveList.front is not a ref from what I can
understand. The reason for the error is still eluding me after
reading through the documentation.

Here is the current list of what's required to make sort work.
(see also http://dlang.org/phobos/std_algorithm.html#sort)

    if ((ss == SwapStrategy.unstable
         && (hasSwappableElements!Range || hasAssignableElements!Range)
         || ss != SwapStrategy.unstable && hasAssignableElements!Range)
      && isRandomAccessRange!Range
      && hasSlicing!Range
      && hasLength!Range)

Even though hasSwappableElements does not work it seems like
hasAssignableElements should since opIndex and opIndexAssign are
both implemented. But MoveList still does not pass as a Random
Access Range for some reason.
Completed the move gen testing style

This does not mean the testing is working. For some reason
std.algorithm.sort is not actually sorting the moves in the two
arrays. This is the reason the equal test on line 3461 is
not working. That is, the two arrays are compared item-by-item
in order and as soon as one of the items is not correct it
returns false.
Implemented a simpler debug API for MoveList

This is used for move gen testing at the moment.
At the moment none of the range API outside of the forward range
stuff is actually used.
Test pawn moves separately for the time being

Perhaps they could be combined at a later time, when the
abstraction is more clear.
Add make and undo testing to the new test code

Rearranged some of the code to be better organized. Also removed
the current tests to restructure them for the new test code section.
Test parsing of valid moves
Test the bitboard properties
Test move validity for generated moves
Add corresponding tests for the white player
Use a static immutable associative array for the test data

As of DMD 2.065 it is not possible to use literals to define
the contents of an AA at module scope. This is a workaround.
Rearrange the test data to fit with the natural usage sort
Add the construction of the friendly blocker test data

A friendly piece is not captured so a friendly piece creates
a hole in the move generation destination square set. For
sliding pieces the removed destination squares are a bit
interesting as a subsection of the ray that the blocker is
on is also excluded.