Instead of returning the `scheduleRefresh` command only after receiving
an `update` message, do it while handling the `refresh` message. For
this not to cause weird behavior, the refresh deadline should be shorter
than the refresh interval.
It will stay flashing red until the next refresh, at which point it goes
back to its normal color. On a successful refresh, it still stops.
Also, add a deadline of 15 seconds to the refresh command.
* Full screen ("alt framebuffer").
* Rounded borders.
* Spinner that starts during a refresh.
* Colored table headers.
* Table header have bottom border.
Instead of pre-allocating the grid and using tricky indexing to fill in
the cells, just fully regenerate it. But do it columnwise first, and
then transpose it.