Refactor generic cleanup mechanism part 1

Current cleanup mechanism is awful. It's hardcoded, without repeat on failures,
contains a lot of mistakes, in some places it is too fast (in case of deletion of VMs)
in other to slow (like deletion of users). As well there is mix of cleanup mechanism
and resource cleanup mechanism.
To resolve these all issues this patch introcude a cleanup engine that resolves all issues
above.
It's resource based, so to add new resouce you should just a make subclass of base.Resource
and probably override some of methods like (list, delete, is_deleted) and that's all.
All complexity of managing:
0) waiting until async deletion is finished
1) repeat on failure logic
2) greaceful failure handling
3) parallelization
4) plugin support
Is hidden deep inside cleanup engine
+ bonus we are able to specify now single resource (without clenaping whole service)

PART 1:
-------
* Add new generic cleanup engine
* Fix bug in broker (queue can be empty because of multithreading access)
* Add retry method in rally utils, allow as to repeat few times method on failures

bp benchmark-context-cleanup-refactor

Change-Id: I9f6fb0642b73b7b4d3f6f14de4ef6943a4fb7320
Merge "Refactor generic cleanup mechanism part 1"