core: Correctly resolve symlinks when loading backends

Instead of ignoring symlinks, we should resolve their targets, and
deduplicate after that. This fixes cases where folks is run in an
environment with software installed in loop mounted file systems — each
backend .so file in the backend path is actually a symlink to the proper
.so file in the loop mounted file system. This is the case on
Tinycorelinux. folks was previously not loading any backends in such an
environment because it ignored all symlinks.

Thanks to John Frankish for help in debugging this problem.