block: let generic driver API work asynchronously

Fix #990
run: smarter timeouts for spawn_serial

Now the boot timeout is the test timeout divided by the minimum amount of boot
trials. The time that is consumed by boot trials is subtracted from the test
timeout.

fix #994