Fix test=True for file.directory with recurse ignore_files/ignore_dirs.
Fix test=True for file.directory with recurse ignore_files/ignore_dirs.

Fixes #25723.

Cause: _check_directory() failed to implement "ingore_files" and
"ignore_dirs" as valid options in "recurse" for directory() state.

Changes:

* New _RECURSE_TYPE const lists possible values for "recurse" list.
* New _get_recurse_set() function validates "recurse". Raises TypeError
  or ValueError and returns a set of strings.
* directory() (test=False) uses _get_recurse_set().
* _check_directory() (test=True) uses _get_recurse_set().
* _check_directory() takes "ignore_files" and "ignore_dirs" into account
  when recursively investigating a directory.

Additional change: _check_directory() always checks the root directory
(specified in "name"). Previously it was skipped when "recurse" was enabled.

saltstack/salt,saltstack/salt,saltstack/salt,saltstack/salt,saltstack/salt