Currently, when a user calls `makeSingleInstance` they need to handle the second instance in a callback.

A better pattern for both users and third-party modules who want to use this information would be to emit an event on the `app` module when the second instance starts.

A pattern like:

```js
app.makeSingleInstance();

app.on('second-instance', (e, argv) => {
  // do-stuff
});
```

As step 1 I'll introduce support for the event and deprecate the callback.  Then in a major version, we can remove the callback.
atom/browser/api/atom_api_app.cc
mate::Dictionary options;
  IconLoader::IconSize icon_size;
  FileIconCallback callback;
  v8::Locker locker(isolate());
  v8::HandleScope handle_scope(isolate());
  base::FilePath normalized_path = path.NormalizePathSeparators();
  if (!args->GetNext(&options)) {
    icon_size = IconLoader::IconSize::NORMAL;
  } else {
    std::string icon_size_string;
    options.Get("size", &icon_size_string);
    icon_size = GetIconSizeByString(icon_size_string);
  }
  if (!args->GetNext(&callback)) {
    args->ThrowError("Missing required callback function");
    return;
  }
  auto* icon_manager = g_browser_process->GetIconManager();
  gfx::Image* icon =
      icon_manager->LookupIconFromFilepath(normalized_path, icon_size);
  if (icon) {
    callback.Run(v8::Null(isolate()), *icon);
  } else {
    icon_manager->LoadIcon(
        normalized_path, icon_size,
        base::Bind(&OnIconDataAvailable, isolate(), callback),
        &cancelable_task_tracker_);
  }
}
std::vector<mate::Dictionary> App::GetAppMetrics(v8::Isolate* isolate) {