(#21376) Sequence BlockExpressions without nesting

When merging Puppet::Resource::Type instances the code attribute was merged in
a way that caused a deep tree of BlockExpressions. This could cause stack
overflows when evaluating this tree, since evaluation is recursive. This
changes the merge method so that they are sequenced as a flat array.
Merge pull request #1717 from pcarlisle/ticket/21376-stack-overflow

(#21376) Sequence BlockExpressions without nesting
Merge branch 'stable'

* stable:
  (#21376) Sequence BlockExpressions without nesting
(Maint) Run tests from installed packages

This creates the basic structure for running tests from packages. It
includes a Rakefile for fetching the appropriate artifacts and executing
systest, the setup steps for installing the repos and packages, and a
basic test that makes sure that puppet is installed.

  bundle install
  bundle exec rake test SHA=COMMITISH

where COMMITISH corresponds to the SHA of a package built via the
puppetlabs-packaging job.
Merge pull request #1720 from joshcooper/maint/master/testing-against-packages

(Maint) Run tests from installed packages
Merge branch 'master' of https://github.com/puppetlabs/puppet