Redmine #6570: Improve error messages when encountering unsafe links.

First of all, change the return code when we encounter unsafe symlinks
so that the message in general is more understandable. We're forced to
use errno codes, which doesn't give us the greatest selection, but
ENOLINK ('Link has been severed') seems like the best one.

Also, improve the error message even more for the specific case where
we want to access a file using a file promise inside such a directory,
since that case is very common.
It's a tricky spot. The thing is that if ``errno == ENOENT``, then you cannot separate between a file that was deleted under your feet, and a link that points to a nonexisting file. And there is no race condition free way to test for it either. From sheer probability I think it's pretty safe to assume that it is the latter though, for which ``ENOLINK`` is the (most) appropriate. 

For ``errno == EEXIST`` we could keep returning ``EACCES`` I guess, since that is guaranteed to be because of a race condition.

But then again, maybe we should just keep returning ``EACCES`` as before, since it is about blocking access to something potentially dangerous. The original issue in the bug report was due to the other code path, not this one.

What do you think?