model: separate the concepts of Cancellable and Progressive Futures

Cancellable futures are futures which can be cancelled while running.

Progressive futures are futures which report the current progress of a running task.

These are orthogonal concepts. It's sometimes handy to have a simple CancellableFuture.

As CancellableFutures are standard Futures as long as task_canceller is not set,
ProgressiveFutures actually derive from CancellableFuture, and the user can decide
whether he wants a cancellable ProgressiveFuture by setting this attribute or not.

Also extend CancellableThreadPoolExecutor to support different type of Futures.

Also add a few more test cases.
driver tmcm: add simulator and queue moves into futures

Basic simulator functionality is working (and behaving like the real controller)

Each move is turned into a future and queued. Cancelling seems to work too.