Interface used to start remote nodes and potentially execute shell commands.
NodeShell should be implemented as singleton classes - in other words, only
one of each class that implements this interface should need to be created.
To register a NodeShell with Cluster, add a call to registerNodeShell
to the static block a the end of Cluster.java
In the future, this may function similarly to Fiji's PlugIn or TrakEM2's TPlugIn.
Start the ClusterNode given by the NodeParameters, by starting an ArchipelagoClient in a
Fiji or ImageJ instance on the remote node.
This method should handle the passed-in NodeShellListener, by passing it an InputStream and
OutputStream corresponding to the remote node when they become ready, and calling
execFinished when the remote connection (ie ssh shell) is closed.
param - parameters used to connect to the machine in question
listener - used to handle open IO streams and closing of the shell connection