Extract find_dir_in_cdpath()

Searches for an existing directory in cdpath and fills the buf with
final absolute path.

The full implementation is missing as of now.
Add basic implementation of cd_path parsing
Expand tilde's on cdpath processing
Rename expand_tilde() -> replace_tilde()
Add expand_tilde() that hides string copying
Omit useless strdup()->free() on expand_tilde()
Introduce utils/str:replace_char()

Replaces all occurrences of the from non-nul character in the str
to the to character.
Use replace_char() in utils/path.c
Set cd path default from $CDPATH env var
Add utils/str:split_and_get() function

Splits string on a separator multiple times returning next part.  *state must
be NULL for the first call.  Usage example:
  char *part = input, *state = NULL;
  while((part = split_and_get(part, ':', &state)) != NULL)
  {
    process <part>;
  }
Use split_and_get() in find_dir_in_cdpath()

This fixes processing of CDPATH that consists of a single item, like
CDPATH=~
Add 'cdpath' option

Specifies directories to check on changing directory with relative
path that doesn't start with "./" or "../".

Thanks to Bruce Hunsaker (a.k.a. hunsakerbn).
Change wording in docs related to 'cdpath'
Merge branch 'add-cdpath-option'

Added 'cdpath' option.

Thanks to Bruce Hunsaker (a.k.a. hunsakerbn).

Feature request #32 at SourceForge.