Minor changes

1. tidying up - defining more constants
2. new basic_type function - specifically to abstract away en passant
and castling logic. Translates the role of a piece (e.g. king valid for
castling, signified by L) to what a piece is (i.e. king, K)
3. create_prospective_move - function created, as same code in various
places
4. score_directions_loop - function created to streamline logic for
computing scores for each possible move for pieces that move in simple
lines (rook, bishop, king, queen).