Key parsing improvements. Ref #776.

* Explain context of expected ':' and '/' error messages
* Restore strict project ID parsing to get proper message about invalid project ID
handle empty help list in aligned printing
separate out help message functions
'definitive' Parser failures

Support a definitive flag for Failure that ignores later failures
instead of appending them.  This is useful to override the default
behavior of listing the failures of alternative parsers.
Merge failures from a,b in a|b when a,b fail on the same input position.

Previously, only the failures from b were used.
invalid/failure Parser construction methods now accept definitive flag
SoftInvalid parser, which defers being invalid in order to preserve a failure message on empty input.
Basic named commands now print usage if the argument parser fails on empty input.  Fixes #776.

The Help for these commands now needs to be cleaned up, since they were not written with
this feature in mind.  In particular,

* consider adding syntax summaries in the short help strings
* alternatively, add the syntax summary data elsewhere for use specifically by this feature
* display a better message when there is no short help string, such as
   "See 'help <command>' for usage." or just displaying the lower level error message, such as
   "Expected whitespace"
Add syntax summary to 'set' and 'inspect' help.  Follow-up to #776.