Added custom context variables to the ScriptNode.

Users can define any variables they want for the global context using the "variables" plug which is visible in the File->Settings... menu. The filename is also mapped to the script:name variable.
Fixed save and load of ReadOnly plugs.

The ReadOnly flag is now set separately on loading, after all the values and connections have been made. Also removed the TypedPlug and FormatPlug repr() implementations because they were duplicates of inherited functionality (and the TypedPlug one wasn't even bound with the right name).
Added support for variable references within variables in Context::substitute().
Added environment variable and ~ string substitutions.
Stopped FileMenu from reusing empty scripts when opening a new one.

The problem with the reuse code path was that the "unused" script may still have some modifications made to it by callbacks registered in startup files. This means that the incoming script is being loaded into a non-vanilla ScriptNode which might cause clashes. This change is required by an upcoming commit in which a startup file adds children to the variables plug of newly created scripts.
Removed Escape hotkey for leaving full screen mode.

The same function is served by the ` hotkey which actually toggles fullscreenity, and the Escape mechanism is unreliable because it was only available if it was the menu item that made the window full screen (there can be other causes).
Implemented automatic directory creation for Render displays.
Added automatic rib directory creation for RenderManRender node.
Added automatic ass directory creation for ArnoldRender node.
Defined standard project variables and used them to define default display, rib and ass locations.

This is all just defined in the default startup files for the gui app. Other applications are free to define totally different conventions or no conventions at all. Startup files with precedence in the searchpath can change the values for the project variables, remove them, or define variables of their own.

Fixes #407 and #59.
Added GraphComponent::clearChildren() method.

It seems worth having a specific method for this, rather than forcing everyone to roll their own, particularly because it can be much faster to delete from the end backwards, which might not be obvious.
Fixed ScriptNode::load() to clear existing variables.

This fixes a problem with File->RevertToSaved.
Greyed out File->RevertToSaved menu item when it doesn't make sense.
Merge pull request #408 from johnhaddon/scriptVariables

Added custom context variables to the ScriptNode.