Add util func for chaining promises

In many places we construct chains of promises consisting of the same function
called repeatedly with different args (a kind of promise-land forEach loop).
This is usually implemented with reduce( func(), Q() ) which results in a deep
indentation christmas tree. This change adds a utility function
Q_chainmap(argsArray, func) to use in such cases.