Pieces need to know the board, so they now have an attribute to rules which holds the board. This avoids every piece from having their own board, they all simply refer to the rules object.
findAvailableMoves now returns an ArrayList<Position>. New shared method in abstract Piece class.