Let firstNonSpacePos and lastNonSpacePos update position destructively.
Deprecate firstNonSpacePos and lastNonSpacePos in favor of skipSpaces.
Maintain mappings for Lines objects.
Optimize skipChars to skip whole lines.
Expose require("recast").printWithSourceMap.

Example usage:

    var sourceFileName = "source.js";

    var options = {
        sourceFileName: sourceFileName,
        sourceMapName: sourceFileName + ".map"
    };

    var source = require("fs").readFileSync(sourceFileName, "utf8");
    var ast = transform(recast.parse(source, options));
    var printed = recast.printWithSourceMap(ast, options);

    console.log(printed.source);
    console.log(printed.map.toString());
working-junk