Async Task tracking and session transfers
This MR is more or less the main effort that was outlined last week.
The main goal is the ability to track async isabelle server tasks on a client basis and be able to time each task's execution time.
At the same time the client state handling will be improved to provide the ability to transparently transfer clients between servers. The obvious use case here is the migration of clients after a server hits an OOM or enters an unhealthy state.