Initial checkin.
* genini (usage): Show that setup.ini is an optional argument.
* genini: Add (untested) --recursive option.  Don't process _obsolete hints.
Fix error output (from Servaas Goossens).  Fix typo in error output.  Allow empty "stuff" after tags.
* genini (get): Fix typo which ate trailing non-space.
* genini: Fix minor typo in warning.  Add new categories.  Don't output keys with empty values.
* genini (get): Make sure that ldesc/sdesc strings are quoted with double quotes.
* genini (get): Only quote $val when specific keys.  Change embedded quotes to apostophes.
Update usage statement
* genini: Add 'message' to list of parsed setup.hint fields.
(get): Handle extra field required by message.
* genini (parsedir): Support tarballs whose name ends in gz,
lzma, and xz in addition to bz2.
(tarball): Test for existence of tarballs to determine which
compression format/extension is used. If not found, default
to .bz2.
(addfiles): Ripple from changes to tarball().
* genini: Default to not worrying if "message" and "ldesc" don't exist. Fix
$val test which could have done the wrong thing if $val was zero.
(get): For 'message', parse the passed in value rather than $_.  Return undef
on improperly formatted 'message' line.
(parse): Detect undef return from get and issue an error since it means that
the line wasn't parsed.
* genini: Don't add keywords with no value to setup.ini.
* genini: always generate a current timestamp.
* genini: sort packages case insensitive
* genini: single quote name of a missing field
* genini: Fix missing 'message' field in section [prev]
* genini: Fix cut description containing '#' sign

For example:
---8<---
@ astyle
sdesc: "Artistic Style is a reindenter and reformatter of C, C++, C# and Java source code. "
---8<---
* genini: Added categories

Accessibility, Debug, Lib, Ruby, Security, Tcl, Video