[Pivotal 58449582] Enables levels where the student can edit JavaScript code instead of blocks

Levels can now be designated as editCode levels. The blockly workspace will be hidden (it is still present) and an editable textbox will take its place.  A set of functions can be optionally defined as aliases to control the underlying object model of the puzzle.

4 levels are added to maze (3_1 - 3_4) which are clones of 2_1 - 2_4, but with editCode turned on.  These are not yet referenced by any dashboard script.


Also: I've included one bug fix related to re-entering the "show code" link on the completion dialog box. If the student had selected try again, the link would no longer appear and the old code would remain in the dialog on the next attempt.

Issues:
(1) This is currently supported fully only in Maze, but it can be added fairly easily to Turtle.
(2) The function aliases do not yet support parameters.
(3) The reporting to the server has not been adjusted to upload the student's JS code (still uploads the default blockly workspace XML) - need to consider security implications of uploading JS code.