Added duplicateBoard function and support for other boards in the makeMove function

This is for when I have to implement attack lookup by making every move
to see if the king is placed in check. Not sure if this is the way to
go about things, could also possibly make an undoMove function. Perhaps
some kind of inheritance, for instance an entire Board class could be
useful but for now this will do.