Minimal changes to make testImmobilisation pass without ERP5Legacy product

Removal of 'divergence_scope' on movement groups may be wrong because
immobilisation still uses old solvers.
But this makes test_19_TestAccountingBuildingAndDivergence pass.
TioSafe: do not use legacy simulation

TioSafe tests still need to be configured for new simulation.
But other failures (e.g. SyncML) prevent doing this now.
Drop legacy tax system
Remove references to legacy simulation
Remove legacy simulation code
CMFActivity: try to reserve older messages first (ORDER BY priority, date)

This reverts commit 2a84df59cb18550a6b6502d80623d0bb04f20562 partially.
With a good index, requests should be fast enough to avoid locks.

Use following requests to update activity tables:

ALTER TABLE message DROP KEY processing_node_date, ADD KEY processing_node_priority_date (processing_node, priority, date);
ALTER TABLE message_queue DROP KEY processing_node_date, ADD KEY processing_node_priority_date (processing_node, priority, date);
CMFActivity: new 'merge_parent=<path>' SQLDict parameter

If specified, <path> must be the path of an ancestor and SQLDict will merge all
similar messages under this path and process only the root message.

This will be used in ERP5 simulation to drop 'expand' activities that are
children of other 'expand' activities.

Because it can be used with grouped messages, it may be interesting to used it
for recursiveImmediateReindexObject.
Zope: monkey-patch 'transaction' to provide start time of transaction
Merge branch 'drop-legacy-simulation' into simulation
Simulation: splitted expand, performance improvements and bugfixes

All interactions and activity tags are reviewed to fix bugs like duplicated
root applied rules, and also reduces the amount of duplicated/useless work, e.g:
- Simulation trees are not expanded anymore when simulated objects are modified.
- 'expand' activities are merged (i.e. dropped) with any other 'expand' activity
  for an ancestor.
New implementation exposes new API that hides much complexity to the developper
about activity dependencies.

By default, expand() now automatically defers any work if the current
transaction takes too long time. This method also gains a parameter to
explicitely choose when to expand, which is often important in unit tests or
solvers. In particular, when postponing work, it takes care of setting proper
activity dependencies.
- If you have any code requiring to expand everything immediately, you'll have
  to replace 'expand()' by 'expand(expand_policy="immediate")'.
- On the contrary, you should replace any 'activate().expand()' by
  'expand(expand_policy="deferred")'.
expand() still accepts activity parameters for any extra needs.

In causality workflow, 'building' state is clarified and now means
« delivery may diverge but we can't know now ». A delivery remains in draft
as long as it does not contain any movement built from simulation.
After init/clone/builder/etc. scripts used to call 'startBuilding' &
'updateCausalityState': this calls must be removed since only
SimulatedDeliveryBuilder should take care of move to 'building' state and
workflows now triggers 'updateCausalityState'.

Disguised interactions have been unhardcoded and either deleted, or moved to
appropriate interaction workflows, which have been reorganized. Those
that triggers update of portal_workflow can be easily customized or disabled.

New API:
- updateSimulation() on deliveries and subscription items. It takes care of
  creating root applied rule, expanding and reindexing parts of simulation
  trees. It somehow replaces:
  - Delivery_updateSimulation
  - Delivery_updateAppliedRule
  - Delivery.applyToDeliveryRelatedMovement
  - Delivery.updateAppliedRule
  - Delivery.expand
  - Delivery.expandRuleRelatedToMovement
  - SubscriptionItem.expand
  - SubscriptionItem.updateAppliedRule
- Delivery.localBuild() is the new way to do local building and replaces
  Delivery_expandAndBuild. Private method Delivery._localBuild replaces
  Delivery_buildOnComposedDocument.
- Simulation Movements that are being built by a builder are reindexed with
  the following tag: 'built:<delivery_path>'. Any after_path_and_method_id
  dependency against 'related_simulation_movement_path_list' and reindexing
  methods should be replaced by this after_tag.

After builder scripts used to confirm the delivery in a separate activity,
which was useless.
Remove obsolete Delivery.updateAppliedRule
Merge branch 'simulation'

- splitted expand, performance improvements and bugfixes
  (see commit 5c09e2e272003a32c584e7d2df9aa62d270ee2e6 for more information)
- Zope: monkey-patch 'transaction' to provide start time of transaction
- CMFActivity: new 'merge_parent=<path>' SQLDict parameter
- CMFActivity: try to reserve older messages first (ORDER BY priority, date)
  (see commit 275799fee81638c365e07303f7465421d7669cef to update existing
   activity tables)
- drop legacy simulation