prevent @@subclasses from being emptied

This can happen due to Chef's stupid approach to loading library files,
which uses Kernel#load rather than #require.  Consequently a library
can get loaded twice: once by Chef::RunContext#load_libraries and once
by another library file which depends on it.

This is also the cause of the TYPE constants being redefined.
make meta/op/params default to {}
fix buggy verification of primitive resource creation

Newly created primitive resources weren't being marked as updated in
real runs, because exists? was being run on an old object.  Furthermore,
the tests didn't catch this because #exists? on any instance of
Pacemaker::Resource::Primitive was being mocked to return true.  The fix
requires re-invoking Pacemaker::CIBObject.from_name after attempting to
create the new primitive, so that cib_object.exists? accurately reflects
whether the creation succeeded.  However, testing this required mocking
Mixlib::Shellout#stdout to first return "" and then secondly a
definition string for the created resource, and unfortunately this
exposed a nasty bug in rspec-mocks:

  https://github.com/rspec/rspec-mocks/issues/559

So we revamp the mocking of Mixlib::Shellout#stdout to use doubles
instead of #expect_any_instance_of.
shared_examples need to include Chef::RSpec::Pacemaker::CIBObject