Just open the plane node settings panel by double-clicking the node in the node network window. Any shader node is then able to be assigned, use the plane settings panel to select that node with the pop-out menus from the panel.
Beside 'surface shader' on the plane node settings panel(and almost any other node too), you'll find the way to assign any other node to that input. This will automatically make the surface shader input triangle appear on the main node, instead of inside it. You can even use nodes that are inside other nodes by assigning them this way.
*Predictable Topic Digression*
I would love the ability to do this with the main input for shader nodes and the child layer inputs of surface layers but for now, you can only assign specific nodes to functions of the particular node you're dealing with.
While I'm at it, I'd also love more inputs to the null shader, that would even take away the need for the digression above.
If there were, say, 5 inputs to each null, I could set out 5 networks inside a single 'container' null node to have an extremely tidy and easy to manage network. The best way for me to do this just now is to use one transform shader per hidden network. (The transform shader seems to be the only one with both an input to use in the main network and a blank 'shader' input to use for internals).