Replaced run_student_code with run_in_student_context

StudentTestCase.run_in_student_context will take a function object and
execute it in the context of the student code.

This is intended to be used for obtaining test results.  The output of the
function will be returned.

Functions can contain arbitrary code, eg:

    def test_things(self):
        def _get_results(self):
	    first_result = dec2base(10, 10)
	    second_result = dec2base(9, 2)

	    return first_result, second_result

	result = self.run_in_student_context(_get_results)

Because functions are run in the context of the student code, they may
reference any object which is (or should be) defined in that code.  The
flip side of that is that they *cannot* reference objects defined in the
local scope (IRRESPECTIVE OF THE USUAL CLOSURE RULES).

See #25 for more discussion on this.

This commit also updates recursive_digits2.tut to use the new approach,
but not any of the other tutorial problems.
Updated fun1.tut to new test format
Added note regarding removing student_function_name

This should be considered a TODO on #25

Because we no longer extract the student function, there's actually no
need to know about its name.  It can therefore be removed from tester.py
(and I will do so soon).

However, keeping the variable in the config file may still be useful, as
it enables the useful anlysis result of 'you haven't actually defined that
function, silly'.

Unsure whether that's worth the added screwing around, though.
Fix a bug in the Makefile.

(The tutorial creation script needs to delete files before recreating them.)
Locals now properly override globals
Added class_rect.tut in new format

Tests are still WIP, but commit is stable
Finalised class_rect.tut tests

The description for this problem will still need to be updated (eg to
remove examples, per #24).
Updated list2.tut to use .run_in_student_context
Merge pull request #27 from CSSE1001/tests_framework

Added new tests framework (which runs arbitrary code in the student's context) and updated tutorial problems.
Added error detection and highlighting in UI

This will occur for all errors detected in the *compilation* phase of the
code.  Other errors will be detected as per normal by the tests.

Closes #22
Merge pull request #28 from CSSE1001/tests_framework

Added error detection and highlighting in UI
Now correctly handles FileNotFoundError

(Well, not so much handles as ignores, and rebuilds the config from
defaults.)

This mistake was due to the upgrade from Python 2, which used IOError.

See #29
Finally squashed the bloody CRLF files
Message wrapping is now part of TestResult
Added todo note re: refactoring
TutorialTestResult now uses the exception object
Resolved #21
Updated version number to 3.00
Updated string1.tut
Added class_use.tut

The analysis for this tutorial is quite complex, and so it is a good
example of how to go about resolving #15.