Implement command-based CLI, and start cluster-bringup

This change adds a CLI styled after the Go tool chain, with a design
inspired by that system. It adds 4 new commands, 'run',
'create-cluster', 'join-cluster', and 'version'. Full help is also
supplied.

Local-mode 'run' is fully functional, and 'create-cluster' also works.
So I did recognise that one doesn't need to create the state file if it doesn't exist. The mere non-existence of the file could be the sign that the system should enter 'local' mode. However, when it comes to debugging systems -- and supporting customers -- I have found its very helpful to be explicit in areas like this. I can examine the file system, and easily tell the difference between a system that has never run, vs a system that has come up at least once and entered a specific mode.