Make Slurm_Showq::uid_to_string() use a cache

Currently the Slurm_Showq::uid_to_string() function calls getpwuid()
for every lookup, and loops through all jobs multiple times.

Instead we use a std::map to build a cache that maps user IDs to users.

This resulted in a 73X speedup on the login node of one of our Intel
clusters with over 900 jobs in the queue, going from 22 seconds to
0.3 seconds.
Make showq deal with NULL job names

One of our users discovered that with the DRMAA interface it
is possible to submit jobs with no job name, i.e. a NULL pointer.
This made showq SEGV and crash, which is not good.

This fix checks that job->name is non-NULL before trying to use
it and sets the job name to "(null)" if it is, to match Slurms
behaviour with squeue.
Merge branch 'master' into vlsci