(#22250) ensure a failed resource status always has an event

Typically, a Puppet::Resource::Status.failed is set to true
when an event is added whose status is 'failure' (this is done
in Puppet::Resource::Status.add_event).  However, there is also
a case where Puppet::Transaction::ResourceHarness.evaluate
directly sets the status failed field to true.

Generate an event for this latter case, so that report parsers
can rely on an event accompanying any failed resource status.
(#22250) refactor previous and add spec tests
Merge pull request #1845 from kylog/issue/22250-reports-inconsistent

(#22250) ensure a failed resource status always has an event