Advanced completion list filtering: abbreviation and "contains" matching
When filtering the completion list by typing, instead of just looking at
the start of the word two other types of items can be matched:
- items containing the word, if what is typed is contained in the item
at a sub-word beginning (marked by an underscore or a capital)
- items which could be abbreviated by what was typed, e.g. FooBarBaz
will be matched by "fbb"
The "old" type of match is always sorted first in the completion list,
so no disruption of existing workflows should occur.