Improved Algebraic Notation (AN)

changes to parsing input:
	players may now specify both the rank and row of the starting position to disambiguate moves.
	castling notation (O-O and O-O-O) now works properly.
	[+#!?]* at the end of a move will now be ignored.

changes made to generating AN for a move:
	Castling notation will now be generated for castling moves.

TODO:
	Indicate check (+) and checkmate(#)	in generated AN