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.
How do you know that ```basedir``` plus all the rest fit in CF_BUFSIZE bytes? ```xsnprintf()``` is not the proper function to use. Just go for ```snprintf()``` and you can skip checking the result since truncation is harmless.