LPS-41293 - User with Add Site permission requires additional permission to be able to add a site
LPS-49859 Adding language as a modulePathString for generating different cache combos.
LPS-49859 Adding a cache key for each language instead of one for RTL and other for LTR languages
LPS-49859 use delimiter
LPS-51358 test WF when adding a file entry

For testing the workflow I introduce here a testing pattern based on the
RAII idiom of C++.

In some tests there is a need to slightly modify the environment (in
this particular case, I wanted to intercept calls to WF handlers to
count the number of invocations). Making sure that the env. is modified
and cleaned up after the test using the common Java idioms (try /
finally) lends to very verbose tests.

I've taken advantage of Java 7 try-with-resources syntax for this
purpose. The idea is to encapsulate this environment changes in an
object, where the state is initialized in the constructor and cleaned up
in the `close` method. The try block semantics will guarantee that
everything works correctly (calling the close method automatically) and
all the logic will be encapsulated in an object, making it reusable
across different tests.
LPS-51358 test WF when copying a folder
LPS-51358 test WF is called when checking in
LPS-51358 test WF is called when reverting
LPS-51358 test WF is called when updating a file
LPS-51358 add repository wrappers

To decouple the workflow from the update / revert operations we'll need
to add functionality around those methods. To avoid polluting the
Capability*Repository with hardcoded calls I'll use repository
wrappers (they are more or less the same as service wrappers).

This will also allow us to remove other hardcoded code in the
capability repositories (like Sync calls).
LPS-51358 add skeleton workflow repository wrapper

We'll move the workflow logic into the wrapper for the methods that
require it: udpate and revert.
LPS-51358 move code into repository wrappers

We move into the wrappers code from two different places:

  - _getWorkflowDLFileVersion(): this code is a slight variation of the
    one contained at the beginning of the `update` method in
    DLFileEntryLocalServiceImpl. It's purpose is to return the file
    version to use when calling the workflow (or null if the workflow
    must not be called).

  - _startWorkflowInstance(): moved from the clean up section of the
    same `update` method.
LPS-51358 pass userId explicitly to updateFileEntry

This will bring close local and non local repository interfaces.
LPS-51358 move methods to superinterface
LPS-51358 remove usages of deprecated methods
LPS-51358 SF
LPS-51358 Do it more granular so we know exactly which calls invokes the workflow and which doesn't
LPS-51358 full package not needed
LPS-51358 full package not needed
LPS-51358 add a counter @see so that if we ever modify one, we will remember to modify the other