+per WIP on persistAsync

NOT FOR MERGE YET, mostly for checking if I'm on the right track
Implementation will be changed a lot (insides of Eventsourced), don't
waste time reviewing in detail just yet.

TODO:
* what about cases when: persist (1st) > persistAsync > persist (2nd)
  should the async be "whenever" or "before persist 2" - the 2nd seems
  much safer from an users perspective I think. It also results in "if
  you do persist after an persistAsync, the async does not win you
  anything". Needs a decision which style we impl.
* Internals in Eventsourced still a bit messy - I'll clean it up
* question - is 2 collections ok? For async I need a multimap like
  implemented because I can't rely on "simply .head", and also someone
  may persistAsync the same object many times - so many callbacks. We do
  not have the seqNr until quite later on, so I'm using object equality
  here - should be OK (since the user only needs to "get called with X
  when its persisted", so when its the same X we dont care about seqNr. But please verify my thinking here.

Refs #15227