Split the runRequest logic in two with generateRequest

so that custom subclasses for `BaseRestTool` can easily plug there logic
Merge branch 'enable-resttool-customization' into develop