Added x88.py for 0x88 operations.

* Added X88 static class.
    class acts as a placeholder for 0x88 lookup tables
    and static methods for operations on 0x88 numbers.
Position rewrite.

* Position rewritten to use new Square, Piece, and Move classes.
    Speed enhancement. Local testing shows about a 15x performance
    speed up in making moves. See
    https://github.com/alexmdc/chesslib/issues/1

* Position split into two classes: Position and Fen.
    Fen now manages parsing and storing position values while Position
    manages generating moves and handling chess rules.

* San methods temporarily removed from Position.
    get_move_from_san and get_move_info are removed until they are
    re-written into their own class.

* Position.copy now uses deep copy.
    When making trial moves copy uses copy.deepcopy for a scratch
    position instead of re-parsing fen. This still proves to be slow and
    an unmake_move method should probably be added.

* generate_pseudo_legal_moves adds optional argument 'source'.
    Speed enhancement. If source is specified the method will only
    generate moves from the source square. (Used when testing if a new
    move will put the king in check.)