docs: add new user guide
This has also been reviewed to death on evolve-testers. There are
still a couple of short sections to write (clearly marked "TODO"), and
one example to add. But (if I may be so bold) this is a gigantic
improvement over the current docs, so it really should get merged.
Incidentally, the figures are all SVG files created with Inkscape.
They're not perfect, but they're pretty nice. Anyone who knows a
better way to create technical diagrams is welcome to contribute.
One wart: there's a test script that accompanies the document and
largely duplicates it, but I haven't unified them. I've been
concentrating on writing the best possible content, not on fiddling
with tools. I suspect that unifying them will be non-trivial, but
definitely worth doing.
#!/usr/bin/env python
import os, time, errno, signal
# Kill off any leftover daemon processes
try:
fp = open(os.environ['DAEMON_PIDS'])
for line in fp:
try:
pid = int(line)
except ValueError:
continue
try:
os.kill(pid, 0)
os.kill(pid, signal.SIGTERM)
for i in range(10):
time.sleep(0.05)
os.kill(pid, 0)
os.kill(pid, signal.SIGKILL)
except OSError, err:
if err.errno != errno.ESRCH:
raise
fp.close()
except IOError:
pass