Refactored python execution to be in only one place

Python execution is now only in VariableCheckGrader._python_exec and the same implementation is also used by the UnittestGrader.

This commit also fixes some bugs in the python-executing graders, namely:
 * some variable types not formatted properly in test results
 * non-existing variables no longer crash the grading