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.
Oh I prefer padded values too which is why I *might* not notice it next time :) The argument in the style guide is that long variable names make things look weird with the padding, but the names here are of similar length. So yeah, sad style guide is sad.