Generalize survey question creation

This abstracts the process of creating survey questions. Instead of directly writing HTML, you make a Question (either a Fixed, Scale, or Essay Question) and pass in a bunch of parameters. The survey-gen.js classes then do all of the work of setting up DOM nodes.

This implements a basic Fixed question. Scale and Essay questions are still TODO, but the groundwork is here.
Not that it mattes here but textContent is slightly faster than innerText.