template.py: fix ${!...} to work for defined-but-empty variables

The ${!...} cancelling variable expansion was always supposed to cancel
the template if the variable was defined but empty, not just if it
wasn't defined at all. However a long-standing bug prevented that and
I just never noticed it until now. This is now fixed.
Revise comments to support user-supplied names and URLs

Standard blog comments allow you to not just give your actual comment
but also tell people your name and often a website URL. DWiki has
allowed this implicitly (you could manually add some sort of a signature
if you wanted to and some people do), but there is a lot of merit in
supporting it explicitly in the way that people expect and recognize.
Also, explicit identification allows DWiki to show it instead of the
submission IP in various 'who wrote this' bits.

- new comment format in model.py / model_comment.py
- new quoting function in httputil.py
- actual support for all of this in comments.py, with related changes
  and cleanups in atomgen.py and macros.py
- the comment-related global variables have changed, so document that
- templates changed to actually show this information where appropriate

DWiki tries hard to reject usernames and urls with dangerous things
(especially newlines, which would break the storage format) and
correctly quote what remains but I may find that it is not sufficient.

(It does not attempt to sanitize things exactly; if there is bad stuff
it simply nulls the field. Better safe than sorry.)
Hack support for supplemental user info into DWiki password file

Now that comments can have people's real names and URLs attached
to them, it's convenient if known logins can have this information
also attached to them. Right now this is (only) used to pre-fill the
information on the comment form; I may rethink that later.

The actual format of this stuff is a hack. I may also change that
later. (Having no actual DWiki users other than myself is quite
convenient.)