Refactored for use of *at-functions instead of snprintf, removed unnecessary loops and added libnotify option

I kind of got carried away adding desktop notifications with progress bars to this tool.

The code now uses fstatat, readlinkat and openat to replace worrysome handling of large on-stack buffers with handling of worrysome amounts of fds. Also I removed some unnecessary repeated looping over /proc and an unnecessary intermediate result array. Also, the code is now identifying files by inode number instead of comparing strings. This is simpler and will still work *almost* always.

If really necessary, I can split this into a proper commit series, however I won't do that before Tuesday.