(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.
I am a litle concerned that the SCM might send a SignalException, and that would cause the service to terminate without logging why (aside from the 'Service stopped' message below). I'm thinking we should not change daemon.rb for now, and file a PUP ticket to have us investigate.