Allow completion tables to designate normal/exceptional candidates
Completion tables can now provide a "normal predicate" via the new
'normal-predicate' metadata entry. The normal predicate determines
which candidates are normal and which are not. Non-normal candidates
are called exceptional candidates, and, by default, they are excluded.
However, if all possible completions are exceptional, we make an
exception, and include exceptional completions, as they are all that
remains.
This generalizes and subsumes the existing mechanisms of
'completion-ignored-extensions' and the internal buffer-name filtering
that read-buffer performs.
We also provide a new minibuffer command 'C-x ~' to toggle inclusion of
exceptional candidates interactively during completion. When
exceptional candidates are included among normal candidates, we
highlight the exceptions with a dedicated face.