(#9435) Gracefully handle when syslog feature is unavailable
Previously, if puppet is run without setting a log destination, it
always create a syslog log destination. This fails on Windows, because
the Syslog module is not available.
This commit adds the ability for a log destination type to say whether
it is suitable or not. If the destination is not suitable, then
Puppet::Util::Log.newdestination(obj) is a no-op. In the case of
syslog, it is only suitable if the syslog feature is enabled.
The reason for making the change this way, is that we don't want to
check whether the syslog feature is available everytime the log
destination is asked to handle a log message.