Add `util.normalize()` and let `util.join()` use it

Use case: `util.join('a', '../b')` should be `'b'`, not `'a/../b'`.
Add a third parameter to `applySourceMap`

The paths in the `sources` property of source maps may be relative. If
so, they are relative to the source map itself. When you apply a source
map A to another source map B, the source in map B that is associated
with map A will be replaced with sources from map A. If those sources
are relative, they need to be rewritten to be relative to map B instead
of map A. In order to do that, the `applySourceMap` method needs more
information: The missing piece between map B and map A. It is now
possible to give this information, using a third parameter: The path to
map A, relative to map B. (It can also be absolute, of course.)

This should be backwards compatible. If the third parameter is omitted,
the method works exactly like before: It assumes that both maps are in
the same directory, which makes all sources relative to both maps, which
in turn requires no rewriting.
Enhance `util.join(aRoot, aPath)`

- If aPath is a URL or a data URI, aPath is returned, unless aPath is a
  scheme-relative URL: Then the scheme of aRoot, if any, is prepended
  first.
- Otherwise aPath is a path. If aRoot is a URL, then its path portion
  is updated with the result and aRoot is returned. Otherwise the result
  is returned.
  - If aPath is absolute, the result is aPath.
  - Otherwise the two paths are joined with a slash.
- Joining for example 'http://' and 'www.example.com' is also supported.
Allow URLs as `aSourceMapPath` in `.applySourceMap()`
Merge branch 'apply-source-map' of https://github.com/lydell/source-map into lydell-apply-source-map

Conflicts:
	lib/source-map/source-map-generator.js
	test/source-map/test-source-map-generator.js
Merge branch 'lydell-apply-source-map'