Add a hint for building on Debian-based systems

Note exact name of the ncurses package.
Move extend_string() to utils/str

It will be used from one more place soon.
Provide initial implementation of expand macro fun
Simplify and shorten expand_custom_macros(..)
Fix "No matches..." message for :apropos command

It accessed freed memory.
Add 'aproposprg' option to specify command format

%a can be used to specify placement of :apropos command arguments, if
not used, it will be implicitly added after a space to the expanded
value of the 'aproposprg' option.
Add 'locateprg' option to specify command format

%a can be used to specify placement of :locate command arguments, if
not used, it will be implicitly added after a space to the expanded
value of the 'locateprg' option.
Add 'grepprg' option to specify command format

%i can be used to specify placement of "-v" string when inversion of
grep results is requested.

%a can be used to specify placement of :locate command arguments.

%s can be used to specify placement of list of files to search in.

If some of the macros are not used, they will be implicitly added
after a space to the expanded value of the 'locateprg' option in this
form: %i  %a  %s.
Add 'findpprg' option to specify command format

%a can be used to specify placement of :find command arguments.

%s can be used to specify placement of list of paths to search in.

If some of the macros are not used, they will be implicitly added
after a space to the expanded value of the 'findprg' option in this
form: %s %a.
Reorganize default 'findprg' command

This made simplifying of show_find_menu() function possible.
Document four *prg options

- aproposprg
- findprg
- grepprg
- locateprg
Add examples of replacing grep using 'grepprg'
Merge branch 'program-options'