Layout the rest of the work for issue #70
Refactor movegen testing target values

Separate the single-piece-on-a-board data from the more complex
test boards so that they can be reused for testing isMoveValid.
Add expected move destination test data

This data set can be used to test isMoveValid for expected move
paths. It was generated from the SinglePieceTargetMoves data set
using the following script and a little bit of cleanup after.

void main()
{
    Coordinate[] abc;
    Piece sp, src;
    Board b;

    foreach(k, v; SinglePieceTargetMoves)
    {
        abc.length = 0;;
        foreach(m; v)
        {
            sp = m.src;
            abc ~= m.dst;
        }
        parseBoard(k, b);
        for(size_t sq = A1; sq <= H8; sq++)
        if(b[sq] != EmptyPiece)
        {
            writefln("ValidDestinations[%s][%s]   = [%s", p2s[b[sq]], c2s2[sq], serializeCoordinates(abc));
            break;
        }
    }
}

immutable static string[Piece] p2s;
static this()
{
    p2s = [
        BlackKing:"BlackKing", BlackQueen:"BlackQueen", BlackRook:"BlackRook",
        BlackBishop:"BlackBishop", BlackKnight:"BlackKnight", BlackPawn:"BlackPawn",
        WhiteKing:"WhiteKing", WhiteQueen:"WhiteQueen", WhiteRook:"WhiteRook",
        WhiteBishop:"WhiteBishop", WhiteKnight:"WhiteKnight", WhitePawn:"WhitePawn",
        EmptyPiece:"EmptyPiece"
    ];
}

immutable static string[] c2s2;
static this()
{
    c2s2 = [
        "A1","B1","C1","D1","E1","F1","G1","H1",
        "A2","B2","C2","D2","E2","F2","G2","H2",
        "A3","B3","C3","D3","E3","F3","G3","H3",
        "A4","B4","C4","D4","E4","F4","G4","H4",
        "A5","B5","C5","D5","E5","F5","G5","H5",
        "A6","B6","C6","D6","E6","F6","G6","H6",
        "A7","B7","C7","D7","E7","F7","G7","H7",
        "A8","B8","C8","D8","E8","F8","G8","H8",
    ];
}

string serializeCoordinates(Coordinate[] destinations)
{
    char[] r;
    foreach(dst; destinations)
        r ~= c2s2[dst] ~ ",";
    return to!string(r);
}
Test isMoveValid against moves with the wrong path

Fix a couple of errors in the movegen testing data.
Change the name of the test data set to match its intent better
Improve the explanation comments
Start refactoring the movegen target data sets
Use the newly refactored destination data set
Add another signature to create board test data
Remove unnecessary code
The new ds ctor should fill the empty space with the empty piece
More movegen test data refactoring

Use the new destination data sets to construct the single-piece
boards for movegen testing.
Add new isMoveValid test
Improve the name of the two pawn data sets
Forgot to complete the previous test
Add a new isMoveValid test
Fix the logic of the previous test
Add a new isMoveValid test
Some reformatting
Add a new isMoveValid test