Inclusion of cloning constructors to classes Puzzle and Square. Update of solving algorithm to check for values that can only be placed in one position within a row, a column or a quadrant. Update of solving algorithm to be capable of handling moments where it can't find a "trivial" update for the puzzle.