add function to run asynchronously and poll the results
some refactorings

- change variable's name and structure
  - s:actions -> s:async_works
  - dict -> list
- remove id and make works a simple queue
- check existence of exit_status
- add tag to know the kind of work
no plugin is allowed to have no test