Explicit simulator roles, and some minor fixes

These are some things that came up when trying to resuscitate the NengoOCL code. Hopefully a straightforward merge.

N.B. the second commit that adds logic to only create the input_signal when the Node actually uses it. This avoids creating signals of size 0 (and the operators to "update" them) which is nonsense here.

Note also that I attached a label to the DotInc in build_node that connects the node's J to the PyFunc's J.  I called it "unclear" because I wasn't clear on why that DotInc exists. Why not just use one Signal for both things, rather two? I deleted this DotInc in #227 and it has something to do with the handling of time (#234). So I'll leave this PR as it is, but I'll add a note to #234 about the time that Nodes and probes should expect to see.