Part two of client work.

Adds functions for submitting commands to a node, and getting a list of nodes from the system.

Open questions:

1. Right now the types are all of type 'string', should we alias these to something like 'Command' ?

2. Should the client maintain a list of valid nodes which may be sent commands based on the last run of the list node function?
(Tip) In go it's common to take advantage of early returns to avoid ever writing ``else``:

```go
if res, err := ... {
    return nil, err
}
if Node != nil && Nodes != nil {
    // ...
   return nodes, nil
}
return nil, nil
```