load existing manifest directly from file and fix appending

this fixes #65, #60, #59 and #55.

This change reads an existing rev-manifest file as part of the rev.manifest() call instead of injecting the existing manifest file into the stream of asset files.
to keep the default behaviour, there is a new boolean option `appendExisting`. the usage looks like:
```
return gulp.src(['assets/css/*.css', 'assets/js/*.js'], {base: 'assets'})
	.pipe(gulp.dest('build/assets'))
	.pipe(rev())
	.pipe(gulp.dest('build/assets'))
	.pipe(rev.manifest({base: 'build/assets', appendExisting: true))     //base is the folder to read from
	.pipe(gulp.dest('build/assets'));
```

my goal was to simplify the usage, fix the existing bugs and make it easier to read/maintain.

`path` and `base` don't quite make sense here. `path`, in everything vinyl, is either absolute, or relative to cwd. here, it's relative to `base` (which itself is either absolute or relative to cwd). It's just a bit awkward.