Less sync-greedy scheduler
Less sync-greedy scheduler

@dbolser found that many workers could not specialize to an analysis that
is in LOADING/SYNCHING state.
This commit changes how the analysis status is used in the selection of the
schedulable analyses. This part of the code essentially wants to know
whether the analysis is BLOCKED or not, so it is now controlled by the
existence of blocking rules.
For SYNCHING analyses, we can just wait that the other agent finishes the
sync (50 seconds at most) and check if they're still BLOCKED after that.
For BLOCKED analyses, we can do an extra sync to make sure they are really
BLOCKED.

We don't need a special treatment for LOADING and ALL_CLAIMED analyses.

Ensembl/ensembl-hive,Ensembl/ensembl-hive,Ensembl/ensembl-hive,Ensembl/ensembl-hive