Refactored tutorlib/tester.py

This refactoring revealed a problem in the original design.

Objects of interest were being injected into globals(), which is only
global on a per-module basis.  There was thus an implicit dependency that
the various components of tester.py remained in the same file.

This has now been changed.  Objects are now injected into the *module*
namespace, not globals() directly.  This also has the beneficial effect of
limiting the 'magic' of injecting objects.