(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 method.
(PUP-3511) refactor 'configure_indirector_routes'

Add a `self` version of `configure_indirector_routes` which takes the
application name as a parameter.  This method is currently copied into
Puppet Server, and the new version of it will allow for the duplicated
version in Puppet Server to be deleted.
(PUP-3511) introduce 'ApplicationSupport' module

Introduce a new module named 'ApplicationSupport'.  Move
'configure_indirector_routes' into this module.  Move
'reset_environment_context' into this module, and rename it to
'push_application_context'.
(PUP-3511) yardoc for 'push_application_context'
(PUP-3511) update docs in 'ApplicationSupport'
Merge pull request #3298 from KevinCorcoran/PUP-3511/introduce-method-for-reuse

(PUP-3511) refactor Application.run for reuse