Now, the server sends the runner pretty much all run metadata. This way,
the reservation the server makes for the runner is accurate, providing
the runner responds with the same metadata it was sent. It also means
that only the server's system clock is relevant for tie breakers, and a
run's duration spans from the moment it is reserved to the moment it is
saved.
Also, the bench method is now always called `bench_method` and a
human-readable description is stored in the database for each run.
- The server now also signals abort_work if the commit is no longer in
the queue.
- The server now immediately reserves the work it gives to the worker,
so other idle workers won't get the same work.
- The server now chooses a run id, not the worker. The worker can still
submit work under arbitrary run ids when no id is known, for example
when importing runs from another database.