+per #15229 defer for PersistentActor

Deferred events are not persisted, thus will not participate in replays
etc. If users want events to be persisted, they can simply use
`persistAsync` instead.

Works as expected even in presence of mixed persist / persistAsync
calls. This actually mattered because of the different states the Actor
could be in (and stashing strategies). Looping now "loops as far as
possible", stashing everything, and then unstashing and targeting the
apropriate state - which can be processing commands - if there is no
`persist` handler registered at all, or persisting events if there is at
least one `persist` handler registered.

Resolves #15229
Depends on #15227