feat(completion): complete a HumanTask, Stage or CaseInstance

This commit adds the feature to complete an active HumanTask (Task), an
active stage or an active case instance.

This can be done by using the CaseService, e.g.

  caseService
    .withCaseExecution("aCaseExecutionId")
    .complete()

In case of a HumanTask which is associated with the given case execution
the created UserTask will be completed (Note: using the TaskService to
complete a UserTask will notify the CaseExecution to complete too, so that
completion works in both direction).

In Case of a Stage (and a CaseInstance) the completion can only be
performed, when the following criterias are fulfilled:

- there are no active children
- all required children (requiredRule evaluates to true) are {Disabled,
  Terminated, Completed, FAILED}

If a case execution has been completed the parent of the case execution
will be notified, that the state of the child execution has been changed.
According to the completion the parent case execution checks whether it is
also able to complete, and if the parent case execution is able to complete,
the parent case execution will be completed too. So, the completion will
always be propagated to upwards to the parent stage instance.

Furthermore it is possible to query after completed case instance:

  caseService
    .createCaseInstanceQuery()
    .completed()
    .list()

related to CAM-2190, CAM-2191, CAM-2195
feat(complete/REST): expose completion via REST Api

related to CAM-2190, CAM-2191, CAM-2195