mbserver: read client cmdline files properly
mbserver: read client cmdline files properly

The code here incorrectly used fstat() and st_size to figure out how
much to read the /proc/$pid/cmdline files.  For files in /proc, the
size reported by stat() is always zero, because these are magical
non-existent files.  We would then read 0 bytes from the file into
the re-used filename buffer, but then since we succeeded in reading
0 bytes, we didn't realize we had the wrong path.  So, every client
was identified as "cmdline".  D'oh!

Fix that.  Just use the size of the stack buffer and an EINTR loop.
The fstat() is a wasted system call.

Note that we're reading cmdline but not doing anything about the nulls
between arguments, so we're only printing out the basename of the client's
argv[0], which is not all that different from just doing readlink on
/proc/$pid/exe.  I'd like to have more of the cmdline visible in the
debug, to differentiate instances of the same executable, but initial
hacking shows that the full command line is a huge spam of noise, so
we need to think of something more clever.

srwalter/membroker,srwalter/membroker