(PUP-3511) refactor Application.run for reuse

Extract a small chunk of code from Puppet::Application.run into its own
method so that it can be reused.  This code is currently duplicated in
Puppet Server; the introduction of this new `reset_environment_context`
method enables the replacement of the duplicated code in Puppet Server
with a call to this new method.
How about `push_configured_context` or `push_application_context`? (Makes it more apparent that it pushes a context configured for the application). 
And I think breaking out the methods into a separate module is the right thing to do when the classes are disjunct. They should be methods that are invoked on the module, not included in the classes; i.e. invoked as `ApplicationSupport.push_application_context()`.