JME part: add support for expected variable names

Question authors can provide a list of expected variable names for answers to mathematical expression parts.
If the student's answer includes a variable name which isn't in this list, on submitting the part the student is given a warning that the variable name is unexpected. If the name can sensibly be split up into more than one variable name, the warning suggests something like "did you mean `x*y`?".

If the list of expected names is empty, the check isn't performed and there's no warning.

It doesn't catch bad  function names, for example in `xln(x)`, at the moment. Should it? Is it ever acceptable to use a function name which isn't defined in the questionscope?

ref #280