make dynamic linker accept colon as a separator for LD_PRELOAD
explicitly reject empty names in dynamic linker load_library function

previously passing an empty string for name resulted in failure, as
expected, but only after spurious syscalls, and it produced confusing
errno values (and thus dlerror strings).

in addition to dlopen calls, this issue affected use of LD_PRELOAD
with trailing whitespace or colon characters.
fix the %m specifier in syslog

errno must be saved upon vsyslog entry, otherwise its value could be
changed by some libc function before reaching the %m handler in
vsnprintf.