Added Path._emitPathChanged() protected method.

This can be used by derived classes to emit the pathChangedSignal(), avoiding emitting it if nothing is listening. All subclasses should use this in preference to self.pathChangedSignal()( self ).
Optimised ScenePath with lazy signalling.

Prior to this, every ScenePath instance was connecting to plugDirtiedSignal() on construction and then when the plug was dirtied, was forcing the creation of the pathChangedSignal() on the base class. It now never forces the creation of pathChangedSignal(), using the new _emitPathChanged() method on the base class. More importantly though, it now only connects to plugDirtiedSignal() when the pathChangedSignal() is accessed for the first time - this removes a huge amount of signal processing in the SceneHierarchy, because there a great many paths are made (one for each level of the hierarchy), but only the root path's signals are accessed.

This fixes the laggy node dragging seen after expanding the SceneHierarchy contents and moving the current frame a few times.

Fixes #209.
Merge pull request #666 from johnhaddon/scenePathOptimisation

Scene path optimisation