Merge pull request #4806 from willthames/async_not_multiple_of_5

Ensure async terminates when time limit is not divisible by 5
Allow async commands to run forever without watching

There is a bug fix in here that should be accepted either way,
that remaining <= 0 rather than remaining == 0 (as otherwise
any async value not divisible by 5 never terminates)

To make async: 0 actually work requires some logic changes because
currently a value of 0 for async_seconds means run synchronously.

The main change here is to not check whether to kill the child
process and let it live forever. The parent processes do remain in
place.

However, an alternative is daemonize in bash with a simple script
of the form and not run it asynchronously at all
```
setsid command args &
disown !$
```