Update sub_test to pass walltime to slurm and look for timeouts

We let slurm handle timeouts instead of using sub_test's mechanisms. However,
we never actually looked for timeouts or told slurm what timeout to use.
Instead we just let the default timeout be used and didn't record the fact that
a timeout occurred.

This updates sub_test to pass --walltime to the executable which will in turn
set the actual slurm timeout. We also not look for the timeout and create an
appropriate error message like we do for pbs.
Will you please use `re.IGNORECASE` instead of `re.I`? It makes the code a bit more readable.