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).