Reduced complexity.
Extracted method.
Some extract method.
Extracted removal method.
Refactored left/right direction processing
Further refactoring to support more generic left-right processing.
Generic promotion algorithm for directions.
usual capture generalized for directions.
Removed unused variables.
En passant generalized for directions.
Merge pull request #46 from lrozenblyum/PawnMovement

Pawn movement