Update apps.base.set_grid_opts() to allow specifying task concurrency
 and output directory. Update apps.grid.GridProcess build() and start()
to use the `outdir` from the grid_opts. Fix apps.grid.array() to write
out a shell script with the same prefix of the `commands.list` file
instead of `array.sh`