Heavy refactor in APICaller

It will make easier to write other callers
API passes all extra arguments to the APICaller
Some more tests for crate_stash