(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 tried drilling down through the code and running some things in the irb, and the only error I could find/manage to cause was a `NameError`. Can definitely go to `StandardError` if `NameError` is too specific though.