Simplify Move

Removed most of the API for the type Move.
What is left is the essentials for making a move.

The reason the other information was encoded before is that there was space in
the underlying numerical value to encode the information. It also proves useful
when undoing a move. However, after rethinking the data flow of move usage
(i.e. move generation, make/undo move), I believe that only what is left over
in this commit is necessary.

Trimming down Move has the advantage of removing unnecessary data manipulation
when generating moves. Since some moves are never used after being
generated this should be an overall win.

The result of removing the data from Move is that encoding moves from and to
text (i.e. long algebraic notation) is more complex. However, this path of
code is not performance critical. Move generation, on the other hand, is.

How this change to Move ties in with the move generation pipiline should
become clearer in the next few commits.