(#14036) Handle upstart better

Change the upstart provider to better handle the mix of some services
that are upstart controlled and some that are init script controlled.
(#14036) Add upstart tests

Refactor upstart provider with suggestions from dpittman.
Add specs for upstart provider.
Merge pull request #681 from jeffweiss/ticket/2.7.x/14036_handle_upstart_better

(#14036) Handle upstart better
Modernize the style of the shell exec provider tests.

This just whips the content up to the modern standard for tests.

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
(#14060) Fix quoting of commands to interpolate inside the shell.

The `shell` exec provider was supposed to emulate the behaviour of 0.25 exec,
which was to pass the content through the default shell to get it executed.

Unfortunately, it got quoting a bit wrong, and ended up interpolating
variables at the wrong point - it used double quotes where single quotes were
really what was desired.

Thanks to Matthew Byng-Maddick for the report, and a fix to the quoting; in
the end we should not be in this position - we shouldn't be using string
execution where we can pass an array instead.  That avoids any chance that
there is more than one round of shell interpolation entirely.

As a bonus, this fixes the base exec type to support specifying the command to
run that very way, and making it good.

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
Merge pull request #698 from daniel-pittman/bug/2.7.x/14060-incorrect-quoting-in-shell-exec-provider

Bug/2.7.x/14060 incorrect quoting in shell exec provider
Merge branch '2.7rc' into 2.7.x
(maint) Ensure every file has a trailing newlines

Without this patch some files exist in the tree that don't have trailing
newlines.  This is annoying because perl -pli.bak -e will automatically
add a newline to every file it modifies in place.  The files that
actually have modifications by the global search and replace need to be
separated from the files that only have newlines added.

This patch simply adds newlines to everything if they don't exist on the
last line.

Yes, the PNG's are perfectly fine with a trailing newline as well.
(#13682) Rename Puppet::Module::Tool to Puppet::ModuleTool

Without this patch, Puppet will monkey patch the existing implementation
of the puppet-module Gem if it is used.  This is bad because the two
implementations are all jumbled up inside of one another and behavior
may become unpredictable.  Warnings are also displayed directly to the
end user in the form of redefined constants.

This patch fixes the problem by renaming Puppet::Module::Tool inside of
Puppet to Puppet::ModuleTool  This fixes the problem because Puppet will
no longer monkey-patch the Puppet::Module::Tool module inside of the
puppet-module Gem.

This patch also has the added benefit of making the Module's name match
up with the CamelCase filepath (puppet/module_tool/ =>
Puppet::ModuleTool)  As a result, no file moves are necessary.
(#13682) Fix acceptance test failures

On Lucid, /usr/share/puppet may not exist.  The module upgrade tests all
make the assumption that this parent directory exists.  This causes
false positive failures when running systest against a Lucid system.

This patch modifies the setup code for all of the tests to ensure the
parent directory exists.
Merge branch 'ticket/2.7.x/13682_puppet_should_not_conflict_with_released_puppet-module_gem' into 2.7.x

* ticket/2.7.x/13682_puppet_should_not_conflict_with_released_puppet-module_gem:
  (#13682) Fix acceptance test failures
  (#13682) Rename Puppet::Module::Tool to Puppet::ModuleTool
  (maint) Ensure every file has a trailing newlines

Reviewed-by: Daniel Pittman
Reviewed-by: Matthaus Litteken
Reviewed-by: Kelsey Hightower
Update CHANGELOG for 2.7.14rc3