test: Fix nondeterminism in tests with notifications

Tests which spin the event loop and stop it in a notification handler have a
chance of re-entering the event loop due to the `vim_eval` call in the
`request()` helper(assuming the request call is what triggered the
notification). Since this will cause an error to be thrown by the lua client,
don't send the extra `vim_eval` request when the loop has been stopped.
eval: Return an empty list from systemlist() when there's no output

This is the behavior on vim's `systemlist()`.
shell: Use job_write_cb for closing stdin

Commit @45525853d352 removed usage of the `job_write_cb` for closing stdin due
to a memory error, but that doesn't work anymore because `job_close_in` closes
stdin immediately, possibly trimming input data before it is fully written.

Since most memory issues with jobs have been fixed, re-add the `job_write_cb`
call to ensure stdin is only closed when it should. Also add tests for scenarios
where using the callback makes a difference.
Merge pull request #1448 from tarruda/shell-systemlist-test-fixes

Fixes to shell.c, systemlist and functional tests