Improve completing-read's handling of completions

Using an alist for completions is supported, but did not work properly
with the :require-match key, this fixes that.
Allow type functions to return nil values.
Mention group-type restrictions in the defcommand macro.
New manual section on commands and types.