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?
My PR changes this stuff anyway