(PUP-3030) More explicit handling of tempfiles on the server

This PR refactors several places where we were using the Ruby `Tempfile` object on the server.  Leaving it up to the runtime to handle the deletion of the tempfiles can be problematic; it can cause excessive memory usage, etc., and in most of the cases where we were using it the files weren't really even temporary.

The PR changes the existing Puppet::FileSystem::Tempfile class to Puppet::FileSystem::Uniquefile, which has all of the semantics of a Tempfile except that it does not manage deletion for you.

The places in the server code where we were using Tempfile have also been refactored to use this instead, and to explicitly delete the files in an `ensure` block where appropriate.
The class looks to be relying on existing public API methods of Dir and File, so it seems robust enough; seems reasonable to me to make use of it.  But yes, let's pull in the tests for it.