Fixed error with GAFFERUI_QT_BINDINGS=PyQt4 environment variable.

We weren't correctly applying the fixup for QtCore.Signal in this case - we were only applying it if the environment variable wasn't specified and we decided to use PyQt based on its existence on the filesystem.
Fixed PySide incompatibility in Slider.

PyQt supports the passing of points directly to drawPolygon(), and PySide supports passing them as a list. Neither support the other's syntax. Fortunately they both support the creation of a QPolygonF from a list and then accept that in drawPolygon(). This problem manifested itself when drawing the off-the-end indicator for sliders.
Key modifiers are now correctly updated during drags.

Before this they were stuck with the values they had at the start of the drag.
Constrained slider positions inside range by default.

They can still be dragged outside of the slider range by holding down the Shift key while dragging.

Fixes #99.
Added basic build instructions to README
Merge pull request #687 from johnhaddon/colorSliderRange

Color slider range constraints
Fixed Sampler indentation.
Added missing default value to GafferImage::Sampler python constructor.
Added ImageSampler node to GafferImage.

This takes an input image and pixel position, and outputs the colour at that pixel.
Fixed comment in ImageView.
Fixed colour space used for ImageView colour sampling.

It was sampling colours after gamma, exposure and luts were applied. Now it samples them before while the image is in linear space. This is a first step in refactoring the ImageView so that the image stats and under-the-mouse samples are computed by nodes and displayed by PlugValueWidgets in an overlay - all the computation is in nodes now but the display is still using miscellaneous OpenGL calls.
Merge pull request #691 from johnhaddon/colorSampling

Color sampling
Updating version and changes
fixed changes..
Removed ValuePlug::Computation::resultWritten.

It dates back to a time when the results of computations were allowed to be NULL - since they are now guaranteed to be non-NULL we can just test m_resultValue to see if it has been written.
Fixed threading issue in ValuePlug caching code.

We were calling cached() and then calling get(), but in the moments in between, another thread could have removed the item we wanted from the cache. The new test cases would either throw exceptions from the nullGetter() or they would hang - now they don't.
Made Viewer ignore plugs with names starting "__".

This is the convention used elsewhere for internal plugs which shouldn't be presented to the user.
Reimplemented GafferUI.Metadata in C++.
Added node description to NodeGadget tooltips.

Fixes #157. That issue does discuss showing object counts and other things, of which I'm quite skeptical - I think it'll be too expensive. No doubt there is additional information which could go be displayed though, so the tooltip will also show a "summary" Metadata item if it has been registered - this will allow individual node types to add useful information by registering a dynamic Metadata item.
Fixed bug in Widget.mousePosition() with GLWidget overlays.

Qt's mapFromGlobal() method doesn't do the right thing when the widget is in a GraphicsView, as it is in a GLWidget overlay. We've already dealt with that issue in Widget.bound(), so rejigging the relativeTo behaviour in terms of that fixes things.