Fully merged node swapping

Supports shader types, texture types, math and mix, mix and alpha-over,
reroutes and switches.
Menu is context sensitive. I know this is generally bad UI to have
disappearing objects, but the menu would be huge if it didn't do this.
Uses active node first, but if active is not selected, use the first
selected node.