Use consistent channel naming at puzzle creation time
We've had a bug for some time where the puzzle editing code would
construct a name for the puzzle channel based on hunt, and round, and
puzzle type, and puzzle_id but the puzzle creation code was only using
hunt and puzzle_id.
In this commit, we fix the puzzle creation code to use the same
puzzle_channel_name function so that channel names are created
consistently.
This commit also adds a check to reject a puzzle if it has the same
puzzle_id as an existing puzzle.