The locking routines are now given the file descriptor to lock.  In the
near future, there may be several different fds for different shared memory
segments.
Preserver/propagate errno values properly.

Use sub-pools when obtaining the canonical path, so that the module pool
does not grow unduly during long/busy sessions.

Make sure to use the canonical path when removing entries from the table.