Complete path, for anything path-like.  Meant to be used as backend for
other completing functions provided by Complete::* modules.  Provides
features like case-insensitive matching, expanding intermediate paths,
and case mapping.

Algorithm is to split path into path elements, then list items (using
the supplied list_func) and perform filtering (using the supplied
filter_func) at every level.
