Implemented middle mouse drag from nodules.

This doesn't make connections, but instead allows the plug to be dragged easily out of the node graph, in the same way that nodes can.
Added bindings for signal::num_slots and signal::empty().

Sticking with the boost underscores_not_camel_case naming convention on the principle that the Gaffer bindings as closely as possible mirror the C++ apis.
Added Gadget::idleSignal() static method.

This allows Gadgets to do things during the idle times of the host event loop. The signal is triggered by code in EventLoop.py, taking care to only process idle events when there are actually slots connected to the signal.
Implemented NodeGraph autoscroll.

This is performed in the viewport Gadget, which automatically moves the camera during idle events if a drag is approaching the edges of the viewport. This drag tracking is disabled by default and turned on by the NodeGraph only for its viewport.

Fixes #14.
Merge pull request #506 from johnhaddon/nodeGraphAutoScroll

Node graph auto scroll