This is making the interface of BaseCallable more consistent.
Previously it was unclear, whether the params passed to perform
should be used to reference parameters or whether the attribute accessor
should be used. Different code used different approaches.
To apply this change more consistently, BaseContracted also removed
params from the methods called inside its own perform method, e.g.
before_perform or after_validate.
At a later point we might consider removing this argument from other large
inheritors as well, for example `BaseServices::SetAttributes#set_attributes`.
Project modules, e.g. calendar can define dependencies, e.g. work packages. An error message is now displayed if a user enables a project module without the dependency being active in the project as well.
Also fixes a serious bug in the Shared::ServiceContext module. Whenever a failing service result is returned, every change to the database is to be rolled back. This was not true when a model was provided since the changes where carried out within an inner transaction