Fixed error in knight class.

Forgot to change during naming convention switch-over.
Fixed board class to alter piece position.

Now when the move_piece command is called it updates the piece.position
member as well as moving the piece. Just a simple mistake. Also another
mistake in the point_on_board method with getting the board width.
Added string representation of a point.

Implemented the __str__() method for displaying a point as a string.
Started implementing move validation.
Removed log from move.py
Set self.moved on first movement of piece.

When we move a piece call piece.set_position() which updates the piece's
position as well as setting self.moved to True.
Fixed typo in move checking.
Updated documentation for move
Set board to use new piece.set_position() method.
Added subtraction for points.
Fixed movement for pawn.
Added equality checking for points.
Added movement for pawn. Get rid of is_path_clear

Now most movement validation will be done inside valid_move() instead of
having a function for movement and a function for path checking. This is
because a pawn's movement was too complicated as how it moves depends on
the state of the board around it (and what it can take).
Updated everything to use new valid_move()
Removed TODO (wasn't using it)