Revamp of cryptogram toy for feedback/discussion

Lots of changes -- some small, some large. Left an edge-case bug for you to eliminate, plus some ideas for additional features to keep practicing on, until you're ready to build something completely different. Overall a really solid initial foray into JavaScript, and I fully expect you to have oodles of questions for me.

PS: The individual commits are pretty uninformative because I bounced around here and there, and I used GitHub's inline editor instead of cloning the repo.