Correctly extract source maps from CoffeeScript.compile

When CoffeeScript.compile is normally called, the result is a string containing
the compiled js.  When sourceMap is set to true though, the result is a hash
with keys ['js', 'sourceMap', 'v3SourceMap'].

Before this change, we'd write that entire hash into the .map file, and I'm
somewhat sure that isn't a valid sourceMap.
Set source map file properties, and allow sourceRoot to be overridden.

The coffeescript compiler accepts various file and path options to help
the browser find the original source files that the map refers to.

sourceFiles - name of the original sources.

sourceRoot - Root url the browser prepends to all sourceFiles. It's useful to
override this if you want to change where/how these files are served, like adding
authentication.

generatedFile - I'm actually not sure why this is necessary, since the generated
file itself should refer to the map. I added in an effort to closely match the
output of the coffee binary.
append sourceMappingUrl comment to js files if source_map is enabled.

The comment tells the browser where to download the source map. It's also
possible to inform the browser using an HTTP header, but the comment is
better by default, because things will work right out of the box.