LPS-47325 add a `TrashCapability` to move trash logic into repositories

Currently, only the LiferayRepository supports the trash bin, but it does make
sense for other kind of repositories to support it. By representing the Trash
functionality with a capability we avoid polluting the repository interfaces
with methods that only a small subset of repositories actually need, still
allowing those that need it to implement the capability.
LPS-47325 initial implementation of LiferayTrashCapability

Move trash related code from DLAppHelper to the new class
LPS-47325 use the new capability based repository in the factories
LPS-47325 refactor repository factories

Move common code to the base class and change method names to use a more precise
terminology ("internal repository" instead of "liferay repository" as now there
can be internal repositories that are not LiferayRepository instances).
LPS-47325 make default capabilities and exports a constant
LPS-47325 use capabilities and replace instanceof checks by capability tests

Use the capabilities to execute trash logic. Also, instead of testing for
concrete classes to check if features are supported, use CapabilityProvider
`isCapabilityProvided` method.
LPS-47325 use the capabilities in the TrashHandlers

Replace direct calls to dlAppHelper with capability uses. Also, insert
a capability use after each call to dlAppHelper.delete(File/Folder) (we need to
do so as we removed trash handling code from dlAppHelper).

Note that all uses of the DLAppHelper class will eventually disappear as we create
more capabilities.
LPS-47325 delegate into the trash capability to delete trash entries
LPS-47508 use @DeleteAfterTest to clean up the test fixture