Node selection pre-highlighting

This introduces a new highlighted state for Gadgets, mirroring the equivalent state already available of Widgets. It then refactors the selection representation in the NodeGraph to use the highlighted state for selected nodes, reducing complexity in the NodeGadgets and dramatically reducing the amount of signal handing required for selection highlight management. Finally it adds selection pre-highlighting for #94.