Added the newPuzzle function

This generates a new puzzle based off what we found by running
the other helper functions. It takes in the last puzzle and
the derived list and keeps everything from the original puzzle
adding only the derived elements where there is only one possible
character that may be placed there.