Reduced occurences of accidental connection snatching.

GraphGadget::updateDragReconnectCandidate will early out if there are no free output plugs, or if a free output plug defines a corresonding input which is not free. Fixes #325 and Fixes #313. Fixes #283 enough that I think we should close it, lest it be open for all eternity.
Refactored previous commit so the checks happen after selecting a reconnection candidate.
Merge pull request #344 from andrewkaufman/noodleSnatchingImprovements

Reduced occurences of accidental connection snatching.