=act #13942 Avoid allocations in LoggingReceived when disabled
+per #15424 Added PersistentView, deprecated View

A PersistentView works the same way as View did previously, except:

* it requires an `peristenceId` (no default is provided)
* messages given to `receive` are NOT wrapped in Persistent()

akka-streams not touched, will update them afterwards on different branch

Also solves #15436 by making persistentId in PersistentView abstract.

(cherry picked from commit dcafaf788236fe6d018388dd55d5bf9650ded696)

Conflicts:
	akka-docs/rst/java/lambda-persistence.rst
	akka-docs/rst/java/persistence.rst
	akka-docs/rst/scala/persistence.rst
	akka-persistence/src/main/scala/akka/persistence/Persistent.scala
	akka-persistence/src/main/scala/akka/persistence/View.scala
Merge pull request #15450 from akka/wip-15424-master-patriknw

+per #15424 Added PersistentView, deprecated View (for validation)
!per #15436 make persistenceId abstract in NEW classes

(cherry picked from commit de3249f7f4b859c3caa232e579d9a3bae7406803)

Conflicts:
	akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/PersistentActorExample.scala
Merge pull request #15456 from akka/wip-15436-abstract-persistenceId-master-patriknw

!per #15436 make persistenceId abstract in NEW classes (for validation)
+per #15327 Add AtLeastOnceDelivery trait

* also remove final of around methods, and let deliver send when not recoveryRunning

(cherry picked from commit 312b0d107a179accaf135f64ed9c3b78f3e351d1)
Merge pull request #15461 from akka/wip-15327-reliable-redelivery-master-patriknw

+per #15327 Add AtLeastOnceDelivery trait (for validation)
=per #15459 Use full batching for persistAsync and defer

(cherry picked from commit 20ac844b4f3999d0261f1a08957c2c2a8367c672)

Conflicts:
	akka-bench-jmh/src/main/scala/akka/persistence/PersistenceActorDeferBenchmark.scala
=act #15361 Require non-abstract actor class (earlier)

* It was detected previously as well when trying to find constructor,
  but with a perhaps confusing error message

(cherry picked from commit 15e964b13e91962474c7907787c37121aae8fd4e)
=doc #13965 Fix wrong code sample for BalancingPool

(cherry picked from commit 24ce0605ac954d516a52d9ce14624414c1c79933)
+act #15284 Add throws TimeoutException to Inbox.receive

(cherry picked from commit ab19cc8a527f1a01a8180c2b199affcb47e5b1d2)
Merge pull request #15414 from akka/wip-13942-LoggingReceive-optimization-patriknw

=act #13942 Avoid allocations in LoggingReceived when disabled
Merge pull request #15463 from akka/wip-15459-persistAsync-batching-master-patriknw

=per #15459 Use full batching for persistAsync and defer (for validation)
Merge pull request #15464 from akka/wip-13965-15361-master-patriknw

#13965 #15361 cherry picks to master (for validation)
Merge pull request #15465 from akka/wip-15284-throws-annotation-master-patriknw

+act #15284 Add throws TimeoutException to Inbox.receive
!per #15428 Deprecate deleteMessage

(cherry picked from commit 4973d0b37d635a0a2c9a94c2898da988e4f14fc7)
!per #15427 Deprecate deleteMessage and writeConfirmations in journal plugin api

(cherry picked from commit 4c271b6b092989ebde26fcd135e6ad56f797a763)
!per Additional deprecations and cleanup

(cherry picked from commit 98619647e372121fb3c2072a0eab20de4148f7d9)

Conflicts:
	akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala
	akka-persistence/src/main/scala/akka/persistence/snapshot/SnapshotStore.scala
!per Change for journal plugin compatibility

* A few more adjustments, found when verifying source compatibility of a few
  journal plugins
* Note that PersistentId will be removed with deleteMessage and we should
  not break plugins because of that
* Add missing section of at-least-once delivery in migration guide

(cherry picked from commit 6727eac6d07280d277968e2e25db44e02be3b102)

Conflicts:
	akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala
	akka-persistence/src/main/scala/akka/persistence/Persistent.scala
	akka-persistence/src/main/scala/akka/persistence/Snapshot.scala
	akka-persistence/src/main/scala/akka/persistence/journal/AsyncWriteProxy.scala
=per #15457 Correlate persistAsync handlers with journal messages

We have assumed that the handlers can be popped when replies come back from journal, but if messages to journal are in flight when the actor is restarted the handlers does not match up with journal replies.

This solution ignores journal replies that were emitted by an old PersistentActor instance
by passing an uid with the journal messages. This means that the handler will not be
invoked for such messages.

(cherry picked from commit 7ebaaab669c9e467a1ffb4d9ed8b6500e1801a7c)

Conflicts:
	akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala
	akka-persistence/src/main/scala/akka/persistence/Processor.scala
	akka-persistence/src/main/scala/akka/persistence/journal/AsyncWriteJournal.scala