Move Making Logic

Huge Update:

Fixed the legal_move checker to ensure that if a player can take a
piece, a move is only considered legal if it does take a piece

More importantly, added rudimentary logic for the CPU to make a move.
Currently the CPU only considers 3 things: If it can take a king, if it
can take a piece, and which piece to move forward if it can't take a
piece. It should eventually split #2 to taking the safest piece
possible, and #3 into which move does not expose it to being taken. This
function takes in the board and returns it in an altered state after
finding which move it wants to perform.