(maint) Reduce amount of stubbing in init_spec

It seems to be easier to work with real objects.
(maint) Remove redundant code in init provider

The test `!File.directory?` is redundant because if the item actually is
a directory, we cannot reach that statement.
(maint) Be more explicit in init_spec expectations

Instead of stubbing every call to File.directory? that may have side
effects in other areas of puppet be more explicit in what we actually
expect.

This may also prevent tests to pass incidentally.
(maint) Simplify init provider instances tests

Let the instances method create real provider instances and just check
the returnvalue
(#14615) Move exclude list into the init provider

Some initscripts are not save to execute on different systems. Example:
If you run `/etc/init.d/reboot.sh status` on a gentoo system you will
immediatly reboot the system.

This can be a problem if you run `puppet resource service` as puppet
will try to get a list of services and then runs the status command on
all of them.

The issue was first addressed in redmine ticket #14615 and #14761 and
introduced different exclude lists for the gentoo provider and the
redhat provider. Unfortunately this did not resolve the problem because
when running `puppet resource service` puppet will not just query the
most suitable provider for a list of services but all suitable
providers. So if the gentoo provider now hides the `reboot.sh` script,
but the init provider (which is also suitable) does not, puppet will
ask the init provider to get the status of the service. As a result
the init provider will now happily reboot the system.

Move the exclude lists into the init provider so the init provider does
the filtering. Each provider that uses the `init` provider as its parent
does not have to do any filtering anymore.

This fix assumes that an initscript that has to be excluded on one
system is never a valid initscript on another system. Given the recent
list of excludes (reboot.sh, shutdown.sh, etc) this seems valid
(maint) Add dependency information for yard & pry

Without this patch `bundle exec yard server --reload` doesn't work.  Nor
is it easy to develop interactively using pry.

This is a problem because people who are developing Puppet need to be
able to access the API documentation easily and the yard server is one
such way.  This patch addresses the problem by adding a dependency on
yard and redcarpet for the development group only.  This will prevent
the yard and redcarpet gem from sucking in a large number of
dependencies when running in a CI environment because these environments
are expected to omit development only dependencies when bootstrapping
using `bundle install --path vendor --without development`

The previous attempt to add these dependencies in GH-1422 failed because
the dependencies could not be resolved in our Windows CI infrastructure.
This patch avoid the problem by limiting these development dependencies
to the :ruby platform, which are defined as "C Ruby (MRI) or Rubinius,
but NOT Windows" in the Bundler Gemfile manual.
Merge pull request #1474 from jeffmccune/add_yard_dependencies

(maint) Add dependency information for yard & pry
(maint) Simplify systemd spec tests

It seems to be easier to deal with real object instances instead of fake
objects.
(maint) Improve systemd provider test coverage
Merge pull request #1475 from stschulte/maint/master/systemd_test_coverage

(maint) Improve systemd test coverage
Merge pull request #1473 from stschulte/ticket/master/initprovider_shutdowns_system

Do not reboot system when runnnig puppet resource service
(#15187) Ensure that fatal errors are logged to console

This commit ensures that the agent always opens a console
logging destination.  It will be closed when the agent
has successfully initialized itself and switched to
daemon mode, but if any errors occur before that point, the
log messages will be available on the console.  Prior to
this commit, fatal errors during startup were not logged
to the console, which made it seem like the error
was being swallowed or that the agent had started successfully
even when it had not.
Merge branch 'cprice-puppet-bug/3.0rc/15187-log-fatal-errors-to-console'

* cprice-puppet-bug/3.0rc/15187-log-fatal-errors-to-console:
  (#15187) Ensure that fatal errors are logged to console

closes #900