Re-implement keepAlive

`options.keepAlive` stopped working after the recent rewrite of `grunt-browserify` in [this commit](https://github.com/jmreidy/grunt-browserify/commit/07d28627cc1eec4944e6d301a8de9e0a5a9dceed#diff-3541cea720decb2c5e5ace30cd93b302L31) I believe.

The problem is that [this line](https://github.com/jmreidy/grunt-browserify/blob/v2.0.1/tasks/browserify.js#L20) gets called at the end of `async.forEachSeries` no matter what the options are.

I'm in the process of re-implementing it myself, these are the changes I've made so far...

---

**Changes:**
- Passing grunt `this.async()`'s `done` into `GruntBrowserifyRunner`
- Fixed some jshint stuff

---

**Current Problems:**
- [ ] Runs twice at each change
- [x] Done called each time `GruntBrowserifyRunner.run` is called