- Electron version: 1.3.6
- Operating system: Windows 7 x64
- Other: Microsoft Office 2013 (will make more sense in a bit)

`shell.openItem()` is a blocking call, it would be nice if it's async or has an async version to handle synchronous external application behavior.

Reproduce: 
Open a password-protected Microsoft Excel file, `shell.openItem()` will be blocking until the Password window is submitted or dismissed. Consequently Microsoft Word does not have this issue.

Related to #2761.

shell/browser/ui/inspectable_web_contents_impl.cc
if (agent_host_)
    agent_host_->InspectElement(web_contents_->GetMainFrame(), x, y);
}
void InspectableWebContentsImpl::SetDelegate(
    InspectableWebContentsDelegate* delegate) {
  delegate_ = delegate;
}
InspectableWebContentsDelegate* InspectableWebContentsImpl::GetDelegate()
    const {
  return delegate_;
}
bool InspectableWebContentsImpl::IsGuest() const {
  return is_guest_;
}
void InspectableWebContentsImpl::ReleaseWebContents() {
  web_contents_.release();
}
void InspectableWebContentsImpl::SetDockState(const std::string& state) {
  if (state == "detach") {
    can_dock_ = false;
  } else {
    can_dock_ = true;
    dock_state_ = state;
  }
}
void InspectableWebContentsImpl::SetDevToolsWebContents(