All the pull requests

Don't merge this yet, I'm not 100% happy with it, but I'm opening a PR for feedback.

This includes @jaypea's #69, with a couple of changes:

 * Rename the `appendExisting` option to `merge`.
 * Read the existing manifest async instead of sync when merging. 

This also includes @goldibex's #75, but merged into changes from #69 (plus a few minor code style changes).

Pending issues/questions:

 * [ ] I'm still not sold on the way `rev.manifest()` handles the base option, it doesn't seem like it matches what vinyl does elsewhere.
 * [ ] It seems like the `sourcemaps.forEach` loop could be DRYer, but I haven't taken time to poke at that yet.
 * [ ] Should we make the manifest backwards compatible by snagging the manifest file if it comes by in the stream, rather than calling `getManifestFile`?
 * [ ] Tests pass, and everything works on my projects, but someone else should try it out to make sure I didn't do anything dumb :)

Thoughts? /cc @sindresorhus @jaypea @goldibex
Why?