The new `setAsDefaultProtocolClient`  and `removeAsDefaultProtocolClient` APIs are great, but without a way to query the current state, it's not possible to implement a UI element like this one. I think it'd be great to add `isDefaultProtocolClient`!

![image](https://cloud.githubusercontent.com/assets/1037212/14545184/fc1a6fac-026a-11e6-98d5-8bf6b2f9678e.png)

Also, I find the naming of these APIs pretty confusing. On Mac OS X and iOS `mailto` is referred to as a "URL Scheme", not a protocol (https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference), and it seems like that might be the case on Windows too. (https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx)

It'd be nice to clarify that this is registering the app system-wide, while the other `protocol` module is only for handling requests initiated from within the app. 

Maybe we could change these to `registerForURLScheme`, `isRegisteredForURLScheme`?

atom/browser/api/atom_api_app.cc
v8::Local<v8::Context> context, void* priv) {
  v8::Isolate* isolate = context->GetIsolate();
  auto command_line = base::CommandLine::ForCurrentProcess();
  mate::Dictionary dict(isolate, exports);
  dict.Set("app", atom::api::App::Create(isolate));
  dict.SetMethod("appendSwitch", &AppendSwitch);
  dict.SetMethod("appendArgument",
                 base::Bind(&base::CommandLine::AppendArg,
                            base::Unretained(command_line)));
#if defined(OS_MACOSX)
  auto browser = base::Unretained(Browser::Get());
  dict.SetMethod("dockBounce", &DockBounce);
  dict.SetMethod("dockCancelBounce",
                 base::Bind(&Browser::DockCancelBounce, browser));
  dict.SetMethod("dockSetBadgeText",
                 base::Bind(&Browser::DockSetBadgeText, browser));
  dict.SetMethod("dockGetBadgeText",
                 base::Bind(&Browser::DockGetBadgeText, browser));
  dict.SetMethod("dockHide", base::Bind(&Browser::DockHide, browser));
  dict.SetMethod("dockShow", base::Bind(&Browser::DockShow, browser));
  dict.SetMethod("dockSetMenu", &DockSetMenu);
  dict.SetMethod("dockSetIcon", base::Bind(&Browser::DockSetIcon, browser));
#endif
}
}  
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_app, Initialize)