chore(engine): cache ELResolver in ExpressionManager

- avoids creating a new set of resolvers with every expression evaluation
- makes VariableScopeResolver thread-safe by putting the VariableScope
  into the ELContext
- improves BeanELResolver by putting the ExpressionFactory into the ELContext
- caches BeanELResolvers on process application level

related to CAM-2725