Support buffer in/out

Refer https://github.com/Polymer/vulcanize/issues/7 

I have added simple patches to make vulcanize supports buffer in/out. I have tried to change the minimum as possible. I don't want make a noise because of this PR. I had test with my gulp-vulcanize branch. [1] I added two more options, inputSrc(Buffer from gulp.src) and outputSrc(callback). If vulcanize supports buffer and gulp-vulcanize supports stream, I could use rename, uglify and htmlmin task at outside like below

```
return gulp.src('src/index.html')
      .pipe(vulcanize({
        dest: configs.output.debug,
        csp: true,
        excludes: {
          imports: [
            'polymer.html'
          ]
        }
      }))
      .pipe(rename(function (path) {
        if (path.extname === '.html') {
          path.basename = 'index-vulcanized'
        }
      }))
      .pipe(gulpif('*.js', uglify()))
      .pipe(gulpif('*.html', htmlmin({
        collapseWhitespace: true,
        removeComments: true,
        minifyCSS: true,
        minifyJS: true,
        customAttrAssign: [/\?=/]
      })))
      .pipe(gulp.dest(configs.output.debug));
```
I need your thought on this.

[1]: https://github.com/ragingwind/gulp-vulcanize/blob/vulcanize-with-buffer/index.js