Simplified OpenGL shader menu building.

This brings it inline with the RenderMan shader menu, and avoids lots of unecessary stat()s which can be slow. The old code also got mighty confused by symlinks in GAFFER_ROOT.
Fixed NodeMenu to be per-app.

This allows two apps to run in the same process without fighting over the contents of the node menu. The menu for an app is now obtained using NodeMenu.acquire( application ) rather than being defined by global functions.

Also refactored renderman and arnold menu building out of their modules and into startup/gui/menus.py to match the menu building for the scene and image modules. Renamed GafferRenderManUI.Menus to GafferRenderManUI.ShaderMenu to reflect its more limited use, and to match the API provided by GafferArnold.

Note that these changes break compatibility. Specifically at IE we need to :

- Update the menu building for Jabuka and Grapher.
- Update the central config files.
fixed coshader hash propagation bug, added unit test
fixed coshader hash propagation bug, added unit test
Merge pull request #359 from johnhaddon/perAppNodeMenu

Per app node menu
Added per-app registration of editors.
* Added a python binding for GafferImage::Filter::defaultFilter()
* Added a method to GafferImage::Sampler to set and get the sample window.
* Added a constructor for the GafferImage::Sampler that does not require a filter (and subsequently uses the default filter).
* Added python bindings for the new constructor.
* Added test cases for all of the above.
Tweaked layout menu order.
Added an ImageStats node to the image viewer so that the user can Shift-LeftMouseDrag a sample area within the image and view it's statistics.
When a sample box is visible the user can drag colours from the swatches into the terminal.
Moved Render::stringToPath() to ScenePlug::stringToPath().

We need to do this conversion in multiple places, so it makes sense to expose it as a public method somewhere rather than force everyone to keep reimplementing it.
Added MapProjection node.

This adds texture coordinates by projection mapping with an arbitrary camera from the scene.
Merge pull request #360 from johnhaddon/perAppEditors

Added per-app registration of editors.
Fixed MapProjection menu search text.
Fixed linking on OS X.

The OS X linker checks everything at link time rather than deferring to load time like the linux linker - so we have to explicitly link in more libraries.
Added missing declaration for GCC 4.2.1.
Updated linking for OS X.
Update JH build to use 3delight 10.0.127.
Added rudimentary Gaffer.app bundle for OS X.

Still needs an icon, and packaging as a .dmg file for installation.
Set up DL_DISPLAYS_PATH and DL_PROCEDURALS_PATH automatically in GafferRenderMan module.
Updated 3delight version.