Return a list of strings from GameState.showMoves().

The previous implementation returned a list of positions, which only gave us
half of the list of moves - where each piece could move to.
Remove any move searching from the Position class.

No longer necessary with our MoveBuilder. This was the same issue we had before
the MoveBuilder anyways – tedious looping.
Add a new overloaded getPieceAt method which accepts a Position

Delegates to the getPieceAt(String) method, but allows us to call getPieceAt
with a position object without us having to call toString() every time.
Update Base piece class with a MoveBuilder helper

This helper lets us create a new MoveBuilder for the current piece, with the
piece and origin properties already set. A 3 liner becomes a 1 liner :)

We've also separated showMoves into two methods - findPossibleMoves(), which
lists all possible moves as an array of Positions, and showMoves() which
returns an array of strings as required by the "list" command.

Also fix indentations caused by IntelliJ (what the ****? this editor is
crazy!).
Update all pieces after commit 788a6d6, and add Pawn moves

After commit 788a6d6 all pieces needed updating to properly fulfil the abstract
class' requirements.

We've also implemented a full MoveBuilder for the Pawns, which should
successfully calculate all possible moves.