[SYCL][NFCI] Less `shared_ptr` for `device_impl` (#18270)
After https://github.com/intel/llvm/pull/18251 devices are guaranteed to
be alive until SYCL RT library shutdown, so we don't have to pass
everything in `std::shared_ptr<device_impl>` and might use raw
pointers/references much more.
That said, constraints from
https://github.com/intel/llvm/pull/18143 (mostly unittests linking
statically and lifetimes of static/thread-local objects following from
that) are still here and I'm addressing them the same way - not totally
changing the ownership model, using `std::enable_shared_from_this` and
keep creating shared pointers for member objects to keep the graph of
resource ownership intact.