Refactored the entire GameBoard

Refactored the GameBoard class and related classes including
BoardListener and Piece to work cleaner together