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 would be better to use a different code, here, from the one above - to distinguish the two cases, so that you can produce a sensible error message that distinguishes this case (which we know how to report) from the other (which definitely isn't this).