Improve source map generation for callbacks and fix a bug.

`indent` has to take a SourceNode; in one case it was being given a
string (for object literals with { "string key": val }).