Added TutorialNodeVisitor.identifier method

Certain visit_X methods in AST can receive as arguments nodes of different
types.  The Python grammar used by ast defines certain attributes on those
nodes which may differ.

It would be possible to check for the expected type of node at runtime,
but this is kludgey and prone to error.

The TutorialNodeVisitor.identifier method extracts the identifier from a
given node, if possible.  It does this using the grammar definition.  If
an identifier cannot be extracted, a StaticAnalysisError is raised.  This
is appropriate, as all attempts to extract the identifier of a node with
no identifier is by definition a static analysis error, not an error in
the student code.

This should be used when implementing #15