refactor(watcher): Use gaze for FS watching

There are several issues surrounding file-watching (see #974), and it makes increasingly little sense to try to address all tricky edge cases within Karma, when there are existing libraries that tackle the "tough issues" for us.

This PR replaces chokidar with Gaze, which is a purpose-built globbing file watcher.  [Gaze](https://github.com/shama/gaze) has some of its own issues (particularly related to ST3), but largely seems to be more stable and reliable than Karma's old approach.  Gaze is fairly widely used, and notbaly provides the underlying functionality for [grunt-contrib-watch](https://github.com/gruntjs/grunt-contrib-watch).

Additionally, we now watch files according to their relative paths (rather than the absolute path that config.js computes for us).  This seems to prevent Gaze from inadvertently traversing filesystem boundaries (which hurts performance, and breaks the detection of new files).

Most unit tests in watcher.js were removed, because Gaze implements its own test suite, which doesn't need to be replicated here.  If there's any functionality that you think should be tested, please leave a comment.

When this PR is merged, it may make sense to start cleaning up file_list.js, and removing globbing hacks wherever we can, and delegate that functionality out to an external library.
How about not excluding on bootstrap (globule.find map gaze.remove) and instead doing something like this:

```javascript
gaze.on('added', function(path) {
  if (path matches one of excludes) {
    gaze.remove(path);
    return;
  }

  fileList.addFile(path);
});
```