Move validation almost complete

+~~~~~~~~~+
| UPDATES |
+~~~~~~~~~+
  * All pieces now have move validation and may only perform
    the right moves.
      - exceptions: *pieces may be in between selected and
                     destination.
                    *king may be put in check illegally.
  * Everything else works including most of the undo.
      - still needs to check for flags (castling, en passant,
        and promotion)

+~~~~~~+
| TODO |
+~~~~~~+
  * As mentioned above, validate pieces based on pieces in between
    and whether king will be in check after move. (harder)
  * Work on undo as mentioned above. (med.)
  * Get redo working (error on attempt right now) (med.)
  * Check if king attacked on way to dest. during castling (easy)
  * Check if same pieces can move to a square for move log (med.)