support gulp-sourcemaps

This pull request adds support for `gulp-sourcemaps`. It holds on to sourcemaps (i.e. files ending in `.map`) until the flush phase, where it checks to see if there's an associated source file. If there is, it uses the source file's hash; if not, it generates a new hash for the file as usual.

Tests and documentation are also updated.
Please follow the existing code style.