Plenty of things to do.

* Add conditional formats.
* Add script hooks, probably for edit formats and such.  Need to think
  about how to integrate in changes to the PR done by the script (after
  all, that's really the whole point).
* Allow fields to not exist; add a "field-always-present" option to the field
  description.
* Add virtual fields.  The output format can use the existing format
  mechanism. 

  This would necessitate having a "no-display" field flag, so that 
  some fields don't show up in a "full" query (adding all the fields to 
  "full" is a rather obnoxious requirement).  There should also be a "raw" 
  query that dumps all the real fields as raw contents, for editing purposes
  (and perhaps for other things).
* Make all boolean options take a true/false keyword; possibly require their
  presence in the file.
* Change edit-pr to include the "Changed-Why:" header in the initial
  PR template instead of a separate prompt.  Maybe.
* Should all the fields listed in the input section be required?
  Configurable?  How about rejecting initial erroneous PRs (PRs with bad
  fields) instead of fixing them up?

  It sucks that pr-edit --submit < /dev/null could quite presumably
  create a valid PR.
* The initial PR filing stuff is way too complicated.  In particular, the
  various field checks should be configured in dbconfig.  That would
  let us remove more builtin fields.
* Decide if the "exec gnatsd locally" option is a security hole.  (Probably.)
  Make it #if TESTING only?
* Find and fix all the major bugs.  There are bound to be lots.
* Don't keep the mail headers in the PR--they're not needed.  Should
  add a Original-Submitter-Addr field or something tho.
* Should PRs have a ">Database-Name:" header?  Probably, and probably
  immutable.  Can be used when editing a PR, or submitting an initial
  one.
* Revise access control mechanisms.
* Append-only fields.  Need to revise access control first.
* Document functions.  Many of them are undocumented (even newly-added
  ones, shame!).
* More cleanup!  More, more!  Delete those nasty global variables!
* Come up with a better name for the lexer source file.
* See how much farther we can go with removing knowledge of particular fields
  from the gnats code. 
* Add squirrels, to make pst happy.
* Make it possible to include adm field contents in the configuration file,
  instead of always using an external config file.
* The database state is not clean.  There should be a struct that describes
  the current database, and is passed around as needed.
* The client state is not clean.  The API is horrid; clients should not
  know or care if they're communicating via the network or locally.  The
  original solution was to just allow network access, but that's not really
  fixing the problem.  (We'll know we're there when gnatsd can act as a
  relay.)
* The client connection to the server should also be encapsulated in a
  struct as well. That is, something to describe the client (its hostname,
  username, password, access level).  Could eventually allow for a 
  single server process that handles multiple connections.
* Other things I can't think of right now.
