LPS-47511 add repository capabilities basic classes

See LPS-47325 description for details.
LPS-47511 make all repositories be capability providers
LPS-47511 introduce base class to remove duplication in capability repositories

As local and non local repositories don't share a common interface, we need to
abstract over the class with a generic and delegate type dependent operations on
subclasses.
LPS-47511 Source formatting
LPS-47511 rename type parameter to suppress warning
LPS-47511 use %s in for all parameters in format strings
LPS-47511 move repository independent code into a BaseCapabilityProvider

BaseCapabilityRepository original purpose was to reuse code for both
kinds of repositories (LocalRepository and Repository), but it also
contained an implementation of a generic CapabilityProvider.

I've split the original definition into two classes:

  - BaseCapabilityProvider: offers a basic implementation of a provider.

  - BaseCapabilityRepository: contains only the minimum code necessary
    to enable code reuse between CapabilityLocalRepository and
    CapabilityRepository. It inherits BaseCapabilityProvider.
LPS-47511 Use key because it's string
LPS-47511 Can we use 2 %s?
LPS-47511 SF
LPS-47511 Jorge made SystemException a RuntimeException
LPS-47511 Jorge made SystemException a RuntimeException
LPS-47511 SF
LPS-47511 SF
LPS-47511 You'll just get a hashcode if you don't do this
LPS-47556 Remove unused var
LPS-47581 SF