feat(case): create a new case instance using CaseService

This commit adds a new service "CaseService" which gives the possibilty to
create a new case instance. Threre exists a fluent builder to create a new
case instance:

  caseService
    .createCaseInstanceById("aCaseDefinitionId")
    .businessKey(...)
    .setVariables(...)
    .create();

or

  caseService
      .createCaseInstanceByKey("aCaseDefinitionKey")
      .businessKey(...)
      .setVariables(...)
      .create();

Creating a new instance behaves like it is described in the specification
of CMMN:
- the case instance (ie. the casePlanModel) makes a state transition into
  the "Active"-state
- the definied plan items inside the case instance make a state transition
  into the "Available"-state, afterwards they move into the
  "Enabled"-state (current limitation: there does not happen any check
  whether the entry criterias - sentrys - are satisfied, or the manual
  activation is equal to false or not)

Note: a case instance is mapped to a internal case execution model!

Furthermore this commit adds further queries:
- CaseService#createCaseInstanceQuery() to query after case instances
- CaseService#createCaseExecutionQuery() to query after case execution

The VariableInstanceQuery is extended by further query criterias:
- VariableInstanceQuery#caseExecutionIdIn() to query after variables which are associated with
  specific caseExecutions
- VariableInstanceQuery#caseInstanceInstanceIdIn() to query after
  variables which are associated with specific caseInstances.

Note: At the moment history is not written for case instances.

related to CAM-2188