Both surfaces showed an indeterminate spinner for the whole install,
because the hub only offered a unary call. They now follow
HubAdmin/InstallModuleStream:
- The store's install dialog shows the phase in plain language, the
overall percentage, megabytes while the size is known, and a seconds
counter. The counter is the second, independent signal: it keeps
running even if the hub goes quiet, which is what tells 'slow' apart
from 'stuck'.
- The setup wizard shows the same bar per module instead of a spinner
inside the button.
- New strings in both locales for the phases, the byte line and the
elapsed counter.
progress_bar_visual_test writes the four waiting states to
build/progress/ in either theme, so the result can be judged without
launching the desktop app. Writing it turned up a real trap worth
recording: awaiting toImage() directly in a widget test leaves the
binding waiting forever - the file passed in six seconds, then sat
there until the ten-minute timeout failed the whole suite.
tester.runAsync() is the fix. Full suite: 186 passed.
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>