Defined a good amount of what the tile does and some of the things that
a piece needs to be able to do. The piece is an abstract class so most
of the methods defined are abstract and must be implemented differently
by each individual type of piece.

Signed-off-by: MasterPpv <pritenvora@gmail.com>