[2.2] Add efficient unparking in batched forcing.

This helps each thread reach its full potential, and in particular the
single-threaded workload is markedly improved.
Merge pull request #3343 from martinfurmanski/2.2-efficient-unparking

Add efficient unparking in batched forcing.
Hopefully solves recent build failures with licensing
Add initial support for determining the freshness of a plan

This involves an instrumented GraphStatistics instance that will
record each "statistical queries" and the observed values, the
result of this process called a snapshot.
In addition, we're also introducing a function defined over two
snapshots that determines if they're diverge enough for the
plans having observed one of them to be scheduled for replanning.

Signed-off-by: Pontus Melke <pontus.melke@neotechnology.com>