9a505aa7

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Fix watch crash on attachment in nonexistent directory

When an attachment's path points into a directory that does not exist (for
example because of a typo), checkAttachment tried to list that directory with
listDirRel to suggest similar filenames, which threw an uncaught IO exception
(getDirectoryContents:openDirStream: does not exist). The watch loop only
catches ExitCode, so this crashed the whole watch process.

Wrap the directory listing in forgivingAbsence so a nonexistent parent
directory simply yields no suggestions, and the normal CE_MISSING_ATTACHMENT
error is reported instead.
coverage-reporte2e-testexample-switzerland-taxesexample-switzerland-vatpackagepre-commitshellvim-pluginweeder-checkconfiguredevShelldefaultmutation-centjesmutation-centjes-diffx86_64-linux