[SYCL][test-e2e] Fix lit config for sycl-ls (#10468)
If sycl-ls is not on `PATH`, the lit config will fail with this message:
env: '1': No such file or directory
It's cryptic, and it's a result of trying to use the first part of the
spawned subshell's "not found" message as the path to the binary. Also,
`sycl-ls` is a hard requirement for the end to end tests to run at all
so we should use the one we built, and if we can't find it, we bail out
with `fatal`.
This patch then, does 3 things:
1. Prefers the `sycl-ls` we should have just built; it's implicitly
being tested here so we *need* it. If the user wants to use an out-of
tree sycl-ls, then running lit directly gives them mechanism to do that
2. Fix the error handling to fail early with clearer and more useful
error messages
3. Cleanup subprocess usage. We don't need to spawn a shell for these
usages, and don't need to call out to `env` because there are better
`subprocess` mechanisms