Preventing nodes being created offscreen

This fixes Edmond's issue #640. After some thought I went back to doing it the way Edmond suggested rather than what I had suggested. My new thinking was that for people who knew what they were doing (say deliberately trying to connect a new Group node below two other nodes which were far apart) my suggested behaviour of not connecting to offscreen nodes would be extremely annoying. Edmond's original suggestion lets people with a plan do what they want, and shows people without a plan what has happened, which I think is preferable.

I originally thought that I would be doing this using a new Gadget::reveal() method to match something David had requested for Widgets in #503, so I started out by implementing that. It turned out to be absolutely not what I needed at all, but it's a good feature and improves the "Edit Input…" menu item as well as addressing David's request, so I've included it in this pull request anyway.