(PUP-3186) Fix directory enforcement of production directory environment

When puppet was checking for the production directory environment to
exist puppet would ensure that the directory environment was a
directory. During the ensure step if the directory environment was a
symlink to a directory puppet would replace the symlink with a directory
called production.

This commit makes it so that puppet will follow the symlink to its
destination and ensure that the destination is a directory instead of
replacing the symlink all together.
Why not FileSystem.symlink?(...) here ?