First version of the clamp node
Setting defaults in plug constructors
Using the recommended method of comparing the ancestor of the input to the plug
Updating to use iterators, updating testing logic to be more clear
switching to use isAncestorOf as suggested, in order to avoid the ancestor call which apparently can trigger an evaluation through python
adding a doxygen comment and fixing some tabbing issues
Added GafferUI.Bookmarks class.

This provides an API for storing Path bookmarks by application, path type and category.
Added bookmark support to PathChooserDialogue and PathChooserWidget.
Added bookmark support to file menu operations.

Also added a couple of sensible bookmark locations in the gui startup files.
Added bookmark support to ObjectReader and ObjectWriter uis.
Added bookmarks support for filename fields in 3d modules.
Removed unwanted requirement PlugValueWidget on Executables.
Added bookmarks support to the BrowserEditor.

This makes bookmarks available in the browser app too, and a new browser config file makes a couple of sensible presets available.
Added bookmarks support to PathParameter uis.

Parameters can specify the bookmarks category they wish to use with a ["UI"]["bookmarksCategory"] user data entry.

I'm not super happy about having to introduce the extra parameter to the _pathChooserDialogueKeywords() method. The problem is that the method (and the ones above it) are called before the class has constructed fully, so the parameter can't be accessed with the methods provided by the base class. We need to check that Jabuka isn't reimplementing this method somewhere, and if it does, get it updated with the new signature. The better fix is probably to make the path
and pathChooserDialogueKeywords into arguments to the constructor so the derived classes have to pass them in - if people would prefer that and it won't cause too much disruption, I'd be happy to reimplement it that way.
Added bookmarks support to PathVectorParameter uis.

This is duplicating code from PathParameterValueWidget - depending on what people think of refactoring the previous commit, we could probably get this to be shared somehow.
Added bookmarks to RenderMan shader parameter uis.

The category can be specified using the "parameterName.bookmarksCategory" annotation - it defaults to "texture".
Added recent items to bookmarks.
Added "Project" bookmark.

This points to the location specified by the project:rootDirectory script variable. To make this possible, the concept of dynamic bookmarks was added to GafferUI.Bookmarks - a dynamic bookmark is a callable which is invoked each time the bookmark is accessed.
Added bookmark support to op app.

This meant modifying the OpHolderDialogue to accept either an op as before, or an op holder node with the op on it. This is because the bookmarks are linked to the application, and the ui can't find that unless there's a parenting chain from the node up to the application. It seems that this kind of requirement is becoming more prevalent, so in the long term I expect everything to have to belong to a script and an application.

Fixes #55.
Fixed PathChooserWidget absolute/relative path bug.

If the main directory listing widget went from having a relative (or empty) path to having an absolute one, then the other widgets weren't picking up the new root.