(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.
@joshcooper is probably a better judge of this than I am, but I'd still prefer to do something more targeted than just catching 'Exception' here.  e.g. if a user writes a feature that simply allocates memory in a loop until we get an OOM, I don't want there to be a chance of it getting swallowed here.

I'd be fine with broadening it beyond just Standard and Script if we think it's necessary, but would probably vote against just leaving it as Exception.