(maint) Fix problems when rspec-puppet and rspec-helper are both used

This fixes a problem that arises when there is more than one
puppet test infrasturcutre "orchestrator"; e.g. rspec-puppet and
rspec-helper. They both add calls to the TestHelper and this ends up
setting up and tearing down the puppet environment for each test.

This problem has existed for a long time, but was noticed when using the
new mark/rollback to ensure test consistency.

The fix os to add a re-entrance check for before_each and after_each to
ensure that they only do the job once even if registered to be called
a number of times.