(FOR REVIEW) (PUP-3521) Fix Puppet's exception swallowing

# FOR REVIEW

This PR attempts to fix Puppet's exception swallowing. It does this by changing places where Puppet rescues and swallows an exception to have a more granular `rescue` clause. 

This PR is going to need some review to ensure these changes are sane.
@cprice404 @fpringvaldsen This code runs the windows service. It is a ruby program started by the Service Control Manager. It doesn't load any puppet code. Instead it sits in a loop executing `puppet agent --onetime` every `runinterval` seconds. So to your question @cprice404, it is not necessary to change (from puppet's perspective).