feat(engine): serialize java obects as json by default

- introduces a new variable type
- exclusive option: either objects are serialized with standard java
  serialization or the newly introduced json serialization is used
- temporarily uses latest Spin snapshot

related to CAM-2433
feat(engine): match serialization format by name

related to CAM-2433
feat(engine): write json-serialized java objects to history

related to CAM-2433
test(engine): test caching of data format variable type values

related to CAM-2433
feat(engine): implement #getRawValue for all variable types

related to CAM-2433
chore(engine): hide serialization specifics from public API

- exposing serialized values of variables is part of another ticket CAM-2544
  so the way of exposing serialized variable values may change

related to CAM-2433
chore(engine): make Spin dependency optional

- removes the 'hard' dependency on Spin classes
- if Spin is not on the classpath, corresponding serialization formats will
  not be available

related to CAM-2433
chore(upgrade): add new variable fields to upgrade scripts

related to CAM-2433