catch and show errors in custom marking scripts; provide unwrapped variables

In custom scripts belonging to parts, `variables` is a dictionary of the question's variables, unwrapped to JavaScript builtins
add `question` and `part` to custom script environment; `constructor` custom script

`part` and `question` refer to the current part and its parent question.

The `constructor` script (called "When the part is created" in the editor) runs just after the built-in constructor for the part.