Add new file completion tables, change project.el to allow using them
* lisp/file-complete-root-relative.el: New file. * lisp/uniquify-files.el: New file. * test/lisp/progmodes/uniquify-files-resources/: New directory containing files for testing uniquify-files. * test/lisp/progmodes/uniquify-files-test.el: New file; test uniquify-files. * lisp/files.el (path-files): New function; useful with new completion tables. * lisp/progmodes/project.el (project-file-completion-table): Use file-complete-root-relative completion table. (project-find-file): Add optional FILENAME parameter. (project--completing-read-strict): Rewrite to just use the given completion table; extracting the common directory is now done by file-complete-root-relative. This also allows using the new uniquify-files completion table. * lisp/minibuffer.el (completion-category-defaults): Add uniquify-file. (completing-read-default): Add final step to call completion table with 'alist action if supported.