(maint) Remove must alias for rspec 3

Previously, puppet had a monkey patch to rspec to alias 'must'
to 'should'. This was done to workaround the use of a 'should'
method in Puppet::Type conflicting with rspec's should.

With rspec 3 syntax, we can replace those with expect(...).to
syntax and do away with the monkey patch. (An earlier commit
programatically replaced all the actual 'should's in the spec
tests using transpec, but it missed the 'must's.)

This commit:
* remove the monkey patch to rspec
* uses the expect(...).to syntax everywhere there was a .must
* replaces use of the == method with eq
* includes some other minor rspec-3 changes to files that needed
  the above treatment
(maint) Update matchers to use rspec 3's failure_message protocol
(maint) Convert some 'should's to 'expect's that weren't previously found

These were a couple outlier uses of 'should' not caught either by
transpec, or by the purge of 'must' for different reasons:
* provider_spec.rb had some metaprogrammed use of should
* semver_spec.rb had a should in a bare 'describe' block
(maint) Remove spec test for previously removed code

These spec tests were added in 3c441212, but the (monkey-patched)
code they tested was removed in 179ee762 when we dropped support
for ruby < 1.8.7.

Kill it with fire.
(maint) Fix a use of 'subject' in an after hook
(maint) Replace 'double' with 'stub' for rspec 3
(maint) Change 'describe' blocks to 'context' blocks

Previously there were spec tests with a 'describe' inside a 'describe',
which was fine and unambiguous as long as the inner 'describe' blocks
didn't make use of 'described_class'. However, rspec 3 consistently
treats the inner 'describe' as the source for the 'described_class',
which can lead to nonsense assertions with nested describes.

So this commit changes inner 'describe's to 'context's where needed
to make 'described_class' apply properly. Further, for internal consistency
within a file, all describes of a given depth or deeper that were
intended to be contexts were renamed as well.
(maint) Rewrite expect to use: not_to raise_error

Previously these two tests had an expect for a nil return (which
the tests don't care about) and no expect for the lack of a raise
(which was the point of the test). So rewrite to be explicit
about what is expected, which also makes the tests in the 'describe'
block more obviously parallel.

This diff best seen with -w.