[pjrt] NFC: Merge implementation of stateful and stateless futures
[pjrt] NFC: Merge implementation of stateful and stateless futures

Move shared code into the PjRtFutureBase and keep only meaningfully different functions in PjRtFuture<T> and PjRtFuture<>.
