Fix some errors in ES

Invalidate was conflicting with the ongoing queue processing and
causing deadlocks. Adding the with_post_event_lock makes sure that we
are not playing with submissions data while we invalidate.

When we check if the submission is busy, we need to check also in the
queue, not only in the worker pool. This avoids random "evaluation
already present" errors from the database.

Also, it's worker.ignore_job, not worker.ignore_operation...
Do not remove fifo directory if keep sandbox is True
Fix SpoolExporter
Fix invalidate

There were several problems with the previous implementation. Mainly,
the candidate operations to be removed from the queue were not all
possible operations coming from the submissions, but they were
obtained from the existing submission results in the db. Basically, we
were trying to remove from the queue only the operations that already
ended (because their outcome was in the db).

Moreover, as the EvaluationExecutor waits for a worker after having
extracted an operation from the queue, we need to make sure that we
handle the case where that operation is to be removed as well.