The visual representation of the board. Can be used by itself to simply display
a board, or in conjunction with BoardController or some other wrapper to
manage its state and handle interactions.
A representation of a move. from and to are square indices.
promo and piece (both optional) are uppercase single character piece symbols.
from can also be HAND (-2), for drops originating off the board.
Used to define the widgets that will be built to represent pieces.
Simply provide a map pieces of String keys and WidgetBuilder values.
The keys should be uppercase for white pieces, and lowercase for black,
e.g. a white pawn is 'P' and a black pawn is 'p'.