Refactor is_applicable

After a lenghty discussion with Alberto on how to continue with the "tests scheduler" we came to the conclusion that the main problem is the way the tests are loaded dynamically and then checked by is_applicable.

So to avoid that problem, we agreed that it's worth trying to put all the logic of what tests to run into one place to allow easier refactoring and reordering and also to allow easier backports between branches.

I couldn't sleep till I had this in an acceptable state. From here the refactoring can start. Good night :)