* On the showuser_list page, use red font to indicate projects for
which the user is not yet approved.
* On the showuser page, show all project membership and highlight in
red those that are not yet approved.

run display pages.
* Add new code to archive_control and libarchive to create tags (in
optional subdirs) of the tags directory. These tags are simply tags
on the current trunk at the time.
* Change to template instantiate and start/top run code to create a
"runs" directory. Within the runs directory are subdirs named for
each runid, and within this directory are start and stop run tags.
Eventually add some other tags when doing swapmods, but do not have
that figured out yet.
* Change the viewcvs code to add an "embedded" view of an archive.
This is just an alternate view that has no header/footer goo, but
only the actual svn contents. The main reason for this change is
that the header and footers take up a huge amount of space and
contribute nothing. Smaller means its easier to add to the instance
and run show pages.
* Add the above mentioned embedded archive view to the instance and
run show pages. On the instance page you see the directory of all
runids, and on the show run page you see the subdir for that run.

interface to the backend. There are new scripts that can be called
from the command line:
newuser xmlfile
newproj xmlfile
They both run from small xmlfiles that are generated by the web
interface from the form data. I also moved user verification to the
backend so that we do not have duplicated email functions, but that
was a small change.
Upon error, the xmlfile is saved and sent to tbops so that we can
rerun the command by hand, rather then force user to fill out form
again. I also do a better job of putting the form back up intact when
there are internal errors.
If the user provides an initial public key, that is put into the xml
file as well and addpubkey is called from newuser instead of the web
interface. A more general change to addpukey is that it is now
*always* called as "nobody". This script was a morass of confusion
cause of having to call it as nobody before the user actually
exists. In fact, another of my ongoing projects is to reduce the
number of scripts called as a particular user, but thats a story for
another day. Anyway, the script is always called as nobody, but we
pass along the implied user in the environment so that it can do
permission checks.

2) Replaced gettimeofday calls with TSC register reads.
3) Removed all recvfrom calls - no overhead for those calls & copying
packets to user space - this does not adversely affect performance.
4) More graphs!! and streamlined error/warning messages to be put into a single
log file.

* New rule:
web%: $(TESTBED_SRCDIR)/WEBtemplate.in
@echo "Generating $@"
cat $< | sed -e 's,@PROGTOINVOKE@,$(word 2,$^),' > $@
* New target in the makefiles:
$(LIBEXEC_STUFF): web%: $(INSTALL_SBINDIR)/%
the above rule is good in a makefile like account/GNUmakefile where all
of the programs are installed to the same place. In the larger makefiles,
might need to split the above rule up a bit:
webnewuser: web%: $(INSTALL_SBINDIR)/%
webfoobar: web%: $(INSTALL_BINDIR)/%
* All of the webXXX.in files will be removed ...