- 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
#include "atom/browser/api/atom_api_desktop_capturer.h"
#include "atom/common/api/atom_api_native_image.h"
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/media/desktop_media_list.h"
#include "native_mate/dictionary.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_capture_options.h"
#include "third_party/webrtc/modules/desktop_capture/screen_capturer.h"
#include "third_party/webrtc/modules/desktop_capture/window_capturer.h"
#include "atom/common/node_includes.h"
namespace mate {
template<>
struct Converter<DesktopMediaList::Source> {
  static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,