Improved snapping

Keep snapping while shift is held; only snap to input ports that accept
the given Link.