ZENGINE: Add a destructor to Puzzle
ZENGINE: Store the Puzzles in _activePuzzles and _globalPuzzles on the heap

This allows List::push_back() to not cause a data copy
ZENGINE: Add TODO to subtitles
ZENGINE: Delete Puzzles from heap before clearing _activePuzzles
ZENGINE: Initialize Puzzle::key and Puzzle::flags

Some Puzzles don't have flags, which caused it to never be initialized