Remove unnecessary data from the text and level model, no start/end text and no
name. The level sequence will hold that info. Also, make the level ids
less magic.
Cleanup now unused decryptor code.
Clean up now unused text files.
Fix user construction to not hardcode the starting level id.
Make Levels a child key of the LevelSequence to which they belong. Also
clean up some ugly use of globals in reset.py
Refactor all the level keys so that the LeveSequence is a parent key.
This means there's also a UserLevelSequenceState which is the parent of
the UserLevelState to mark the user's unlock/completion state.
Use the level sequence name instead of the (now non-existant) level
name.
Separate the Caesar ciphers and substitution ciphers into two separate
level sequences.
Make the separate level sequences visible on the progress page and clean
up the styling somewhat.
Add logic to unlock the next level sequence when a level sequence is
completed.
Fixed case where level sequence was assumed to be 'default'