Multithreaded TMCD in the "classical" sense; I fork a set of children to listen on the socket.  Since tmcd requests are basically request/reply, each child is independent of the other, and so there was no need to bring real threads into the picture. There is a new option [-a num] to control the number of children in the pool; defaults to 5. I set it up so that children that die are replaced with new children. Hopefully this will add a little robustness, making sure that tmcd is always running.
Multithreaded TMCD in the "classical" sense; I fork a set of children
to listen on the socket.  Since tmcd requests are basically
request/reply, each child is independent of the other, and so there
was no need to bring real threads into the picture. There is a new
option [-a num] to control the number of children in the pool;
defaults to 5. I set it up so that children that die are replaced with
new children. Hopefully this will add a little robustness, making sure
that tmcd is always running.

Oh, fix about a 100 -Wall warnings!

nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome