Refactoring GraphGadget::connectionGadgetAt

The public and private functions are now completely separate, reducing unneeded calls to GraphGadget::nodeGadgetAt and Gadget::select during drag-reconnect queries.

This goes towards addressing Issue #283, though the issue should remain open to investigate further speedups within ViewportGadget::SelectionScope or possibly IECoreGL::Selector directly.