Main function for the command line interface. This does one of three things:

  1. If this is the main process, then it parses the arguments and runs and manages the jobs

  2. If this is a worker process, then it starts up and waits for work

  3. If this is a supervisor process, then it query the job scheduling system for information about the compute nodes to use, and will then set up and run a manager (main) process that will use those nodes to run the jobs