(PUP-2711) Make manifest-directory load recursively when future parser is on

This makes recursive loading of manifests available when the future parser is on. All .pp files in the manifestdir and its subdirectories will be loaded in alphabetical depth first order (a directory's entries are processed alphabetically, if it is a directory, it is processed before the remaining files in the current directory).
On the topic of the FileSystem abstraction, there is `Puppet::FileSystem::PathPattern`, which is used to make safe path patterns.