added some helper function to create new Board instances
added bishop moves and abstracted out a lot of shared logic
added tests for moves