hop_tasks: first param is now dynamic delayedRootList

Not a breaking change. Now accepts combination of future or func...

Also using Future.forEach instead of homegrown solution
bot_git: added some arg validation to TreeEntry ctor

and a doc comment on mode
bot: renamed requireArgumentMatches -> requireArgumentContainsPattern

a bit more generic

kept requireArgumentMatches, but deprecated