progress: use '%*d' to pad progress value
Follows up
7f5108e58083. The problem of '% Nd' is that ' ' means we want
{' ' or '-'} as a sign character. We should instead write '%Nd' to pad up
to N characters with space, and N can be '*'.
py3: stringify IOError/OSError without loosing local character
Follows up
fa4d333cac58. An environment error may contain non-ascii characters
on Windows, which should be encoded to a platform-native string.