It can make moves

I added in a testclass that tries to have the AI make random moves
against itself.  Most of the moves it makes are legal, but there are a
few issues:
Black appeared to move Nf6, then not long after move Nh6, without having
moved elsewhere in between.
Pawns have appeared to move backwards (White will play e4, then later
play e3).
Every once in a while, I have an unexplained NullPointerException or
IndexOutOfBoundsException.

If you have a chance, please try to debug or write some test classes.