[hailtop.batch] simplify BPE implementation (#10322)
[hailtop.batch] simplify BPE implementation (#10322)

* [hailtop.batch] simplify BPE implementation

While trying to fix some weird errors, I realized this was more complicated than necessary and, I
think, broken.

In the new implementation, a BatchPoolFuture is a thin wrapper around an asyncio.Future. Instead of
tracking the value and any exceptions manually, the BatchPoolFuture relies on asyncio.Future.

I think the diff is not very helpful, just look at the new implementation. It's simpler.

* fix

* cancel the coroutine after we cancel the batch
hail-is/hail,hail-is/hail,hail-is/hail,hail-is/hail,hail-is/hail,hail-is/hail,hail-is/hail,hail-is/hail