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
const std::string& type,
                                    const base::DictionaryValue& user_info) {
  if (Emit("update-activity-state", type, user_info)) {
    *prevent_default = true;
  }
}
void App::OnNewWindowForTab() {
  Emit("new-window-for-tab");
}
#endif
void App::OnLogin(LoginHandler* login_handler,
                  const base::DictionaryValue& request_details) {
  v8::Locker locker(isolate());
  v8::HandleScope handle_scope(isolate());
  bool prevent_default = false;
  content::WebContents* web_contents = login_handler->GetWebContents();
  if (web_contents) {
    prevent_default =
        Emit("login", WebContents::CreateFrom(isolate(), web_contents),
             request_details, login_handler->auth_info(),
             base::Bind(&PassLoginInformation, WrapRefCounted(login_handler)));
  }
  
  if (!prevent_default)
    login_handler->CancelAuth();
}
bool App::CanCreateWindow(