Refactored SceneGadget internals into abstract SceneGraph class.

That might have been a complete waste of time. I think it's at least worth removing the update logic from the tbb::task, and having it in the location, but I'm not sure about the rest at all.
Added visibility support to SceneGadget.