- Electron version: 0.37.6
- Operating system: Ubuntu 14.04

When calling `desktopCapturer.getSources()` with different types one after another, only callback for the first call is executed.

```
desktopCapturer.getSources({ types: ['window'] }, callback1)
desktopCapturer.getSources({ types: ['screen'] }, callback2)
```

Here only `callback1` will be called.

Here is a spec which fails on master branch:

```
it('should respond to two subsequent calls with different options', function (done) {
  var callCount = 0
  var callback = function (error, sources) {
    callCount++
    assert.notEqual(sources.length, 0)
    if (callCount === 2) done()
  }

  desktopCapturer.getSources({ types: ['window'] }, callback)
  desktopCapturer.getSources({ types: ['screen'] }, callback)
})
```

I did some investigation - [`desktopCapturer.startHandling`](https://github.com/electron/electron/blob/master/lib/browser/desktop-capturer.js#L75) is called for a second time, but [`desktopCapturer.emit`](https://github.com/electron/electron/blob/master/lib/browser/desktop-capturer.js#L36) is only called once. Seems like an issue with media listeners, but I wasn't able to get deep into c++ code. Thanks!

atom/browser/api/atom_api_desktop_capturer.cc
const DesktopMediaList::Source& source) {
    mate::Dictionary dict(isolate, v8::Object::New(isolate));
    content::DesktopMediaID id = source.id;
    dict.Set("name", base::UTF16ToUTF8(source.name));
    dict.Set("id", id.ToString());
    dict.Set(
        "thumbnail",
        atom::api::NativeImage::Create(isolate, gfx::Image(source.thumbnail)));
    return ConvertToV8(isolate, dict);
  }
};
}  
namespace atom {
namespace api {
DesktopCapturer::DesktopCapturer(v8::Isolate* isolate) {
  Init(isolate);
}
DesktopCapturer::~DesktopCapturer() {