(PUP-1944) Fix issue with manifest being a directory when initializing

The issue was that Puppet manages files and directories mentioned in
settings (to set the correct owner and mode). The :manifest setting
was a :file settings type and this did not work well when the :manifest
was a reference to an existing directory ("cannot change a directory to
a file") and the puppet master refused to start.

This commit changes this by introducing a new settings type;
:file_or_directory that manages the path as a directory if it exists or
if the path ends with slash (/ or \).