When file- or directory-opening primitives get errors, signal those
errors as open-file-error conditions. In those cases, don't use
another condition as the explanation: create a meaninful error string
from the error's context.
This change has these effects:
* All file/directory-opening primitives now signal the same condition.
* RETRY and USE-VALUE handlers are available whenever that condition
is signalled; previously these handlers were only sometimes
available, and there was no reasonable way to provide them when they
were not.