Simplify Abort behaviour in runner
At [runner.py line 315](https://code.kodo.org.uk/kilter/kilter.service/-/blob/main/kilter/service/runner.py#L315) there is a check for
the loop ending condition *before* handling cleanup after receiving `Abort`. This *may* result in channels not being closed correctly, but mostly it is over-complicating the code.
The handling of `Abort` should:
- always be run
- **not** send a response on the channel
- close the channel
- return
The `abort()` method must also **not** await a response from the channel.
issue