Castling works now, but it's really janky. Committing so that I can refer back to this in case things go terribly awry.
Added Piece::Pawn to get rid of some conditionals. I'll optimize that later.