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.
I think separating this failure mode from the other is important, exactly because you're now Log()ging based on the other path's rationale.  Reverting this path to EACCES makes sense and would let you *also* Log() that case with an explanation of the security issue to which it relates.