Big Rework to Move to More of an OOP Design

The pieces are now expressed as classes. This will hopefully ease
development of tricky piece specific logic.
Renames pieceAt to get

We're going to add set() method soon. Figured things would be simpler and
make more sense in OOP if the board was a simple object that just had get
and set methods for pieces to use.
Fixes Board->down()
Removes Untested Code

There used to be a test that created a custom board. But I'm rethinking
how the Board object is used. Instead of having strict access, that won't
allow you to do anything illegal according to the rules of chess, I'm
thinking the Board object will be a dumb object having a set and get
method. This way Pieces, as we will later see, will have free access to
do whatever they want. This will be particularly necessary for castling
and for capturing en passant.

As a bonus, this will allow us to also create completely new pieces that
have radically different rules (exploding pieces, jumping pieces, long
range attack pieces, charging pieces, etc)
Adds BoardTest::testSet

The pieces will need to be able to manipulate the board, so the board will
need not only a get method, but a set method.
Implements Board->set method
Adds BoardTest::testClear

If we gonna set and get, we also gonna need clear
Implements Board->clear method
Refactors Board->__construct to use set method
Add BoardTest::testCustomBoard

Yeah we gonna need that again.
Implements Custom Board
Fixes Assert Argument Order

First argument to assertEquals is supposed to be expected
Adds PawnTest::testUp

The Pawn->up method will tell us what position is above the pieces current
position or if it cannot move up return false
Implements Pawn->up
Implements Piece->getPosition method

Relies on $this->board, so we gonna have to figure out how to get the board
object in there. After that, implement the find method on the board.
Implements Method to Get Board into Piece

+ Adds setBoard method to Piece
+ Updates Board->set method to set board on piece
+ Updates Board->__construct to use set on custom board
Adds BoardTest::testFind
Implements Board->find method
Adds assertion for blocked pawn
Adds assertion in PawnTest:;testUp for Piece::DARK