Bug Fixes and Improvements to 2.0

Major Change:

+ Added a GitRezReleaseMode based on the previous BlackGinger implementation.  Should we more formally define the SCM validation steps required before building (i.e. should all SCM release modes check for untracked files, and what should they do if untracked files exist?)

Minor Changes:

+ Update appendenv, prependenv and setenv support in CSH.  In CSH referencing an environment variable which doesn't exist results in an error (unlike bash).  We protect against this by wrapping in an if/else clause.  Lame.
+ Update initialiser of Python CommandInterpreter to pass through the correct arguments to the base class.  Not entirely sure if these are correct, but without them it was broken.
+ Better handling of os.environ in the _expand method.  os.environ is not a 'real' dict and so does not work with the ** syntax in the call to safe_substitute.  

Patches:

+ Add future import of with statement for Python 2.5 compatibility.
+ Change Exception syntax to be compatible with Python 2.5.
+ Change iterator syntax to be compatible with Python 2.5.
+ Properly escape { and } in string formatting.