Add conditional execution to reactor lifecycle events + fix rspec matchers

[LIFECYCLE EVENTS]
If conditional now executes when job finally executes. eg: publishes :reminder_email, at: :run_at, if: -> { not_already_reminded }

[MATCHERS]
Matchers will work even if other events are firing
You can also fire an event multiple times in the same test

[DOCS]
Updated lifecycle documentation
this smells a little funny. would it be possible to just pass `{actor: model}` instead? The Event.publish API is designed to deconstruct an AR::Base into _id and _type columns if it can.