refactor job step delete logic

Call delete_step_records() before clearing the job's JOB_COMPLETING
state flag. This would make a difference in the case of jobs automatically
requeued based upon their exit code, but probably not in other cases.
Also in the select plugins, check not only for a job state of JOB_COMPLETING,
but also FINISHED states. In either case, we are not in a position to
gracefully clean up the step.
Re-use of active job ID error

If an attempt is made to submit a job explicitly using a job ID that already exists, then do not try to purge and re-use it, but return an error. The slow clean-up of job steps on Cray systems due to node health check makes me wary of preserving the existing code. Returning an error seems a safer option.
Add function that purges step list

No checking or other operations are performed on this list, just a purge.
Simple purge of step list with job

When a job record is purged, simply purge the step list rather than possibly invoking a node health check on Cray systems.