Added default definition of visit_FunctionDef

Serious problem with this implementation: subclasses need to call
super() on visit_FunctionDef, but CANNOT do so on any other methods (as
those methods are not defined on TutorialNodeVisitor).

Two (three?) possible solutions:
* try/except on every super call
  - this is yuck, and is seriously not even an option
* define every possible method on TutorialNodeVisitor
  - this will actually solve the problem
  - side effect: generic_visit will not be called (breaks with
    expectations)
  - can add dynamically by listing appropriate classes to override:
      classes = map(partial(getattr, ast), dir(ast))
      classes = filter(inspect.isclass, classes)
      classes = filter(lambda c: issubclass(c, ast.AST), classes)
Added metaclass to define all possible visits

This means that subclasses can unconditionally call super.

Undefined visit_classname methods are aliased to
ast.NodeVisitor.generic_visit
Shutting git up by deleting crap
Merge branch 'tests_framework' into static_analysis

Conflicts:
	code/tutorlib/TutorBindings.py
	sys_bin/mypytutor25.iss
	sys_bin/mypytutor26.iss

All conflicts are meaningless: files were only deleted because of
different line endings, and git playing up.
Now uses local generic_visit
Added super() calls
Fixed infinite loop caused by default iter implementation
Fixed bug causing base class methods to be overwritten
Updated analysis.py to call superclass methods
Completely redesigned the recursive visits system

Key points:
  * it is no longer necessary to use @visit_recursively
  * analysis.py must now define ._analyse(), not .analyse(text)

This change was made necessary by the addition of functionality in
TutorialNodeVisitor (the superclass).  For full details see the
descriptive comment in TutorialNodeVisitor.generic_visit, but the short
version is that recursing from the parent class caused issues with nodes
being visited more than once, or (under an alternative strategy) not at
all.
Added support for leave_classname methods

These methods will be called (if defined) when the relevant node has been
left (ie, after all child nodes have been processed).

If leave_classname is not defined, generic_leave will be called.
Updated 'automatic' TutorialNodeVisitor functionality

TutorialNodeVisitor now tracks the current function and class.

It also correctly identifies and handles nested functions and classes.
The effect of this is that existing code which refers to nested functions
or classes must be altered.  Note that methods are nested functions.

Previously, a nested function was saved in the arguments dictionary as its
bare method name (eg __init__).  It is now prefixed by its class name (so
__init__ becomes ClassName.__init__).
Renamed .args to .functions

The old .args[name] is now .functions[name].args

Updated tutorials to reflect this and earlier changes
Changed .classes to use ClassDefinition
Added meanfun.tut
Added .calls property to node visitor, and supporting code

This automatically keeps track of information on every function (or
method) called by the student code.

Note that because of how TutorialNodeVisitor.identifier is implemented,
methods will be listed under their bare name (eg 'append', not
'list.append').
Added list3.tut
Fixed bug in TutorialNodeVisitor.values

Recursive calls to values were previously defaulting to
suppress_exceptions=False, and ignoring the value set on the initial call.
Now checks for initialisation to empty list
Added list4.tut