feat(Http): Http can be configured to coalesce the requests.

This is updated Mark's PR 1170.
`runFn` gives no insight into the purpose of the function.  The reader would wonder, "Why not just run it?".  If it's going to run later, that's `runAsync`, etc.  `runCoalesced` is not technically right – because it may not run coalesced, which is your point (I actually used a generic name earlier, then a maybeRunCoalesced).  Since it's a parameter, I'm hoping it's understood that the intent is to allow running it as a coalesced function, but the caller might provide a different implementation that may coalesce 1:1 ;)  I'll think of a better name.