feat(engine): major overhaul of history

- add event stream oriented API
- make it possible to exchange history event consumers in order to plug
  alternative backends
- move from INSERT + (SELECT+UPDATE)* to INSERT + UPDATE* scheme
- update only columns that change
- updates to HistoricActivityInstance table now leverage Primary Key
  instead of 3-column composite index
- add possibility to make history asynchronous (feature not included but
  now possible to build)
- add parent activity instance ID cloumn to historic activity instance table,
  making it possible to extract activity instance tree from History (API
  not exposed yet)

related to #CAM-1092