- Electron version: v0.37.5
- Operating system: Any

It would be useful if we can open DevTools choosing all of it's available position: detached, docked right or docked bottom.

The new API could be something like this:
# webContents.openDevTools([options])

Opens the devtools.
- options Object (optional)
  - mode String - ['detached' | 'right' | 'bottom'] . opens DevTools in specified position. Defaults to last used mode.
  - detach Boolean - opens DevTools in a new window (deprecated, use mode: 'detached')

atom/browser/api/atom_api_web_contents.cc
}
  isolate->ThrowException(v8::Exception::Error(mate::StringToV8(
      isolate, "Invalid event object")));
}
void WebContents::BeginFrameSubscription(
    const FrameSubscriber::FrameCaptureCallback& callback) {
  const auto view = web_contents()->GetRenderWidgetHostView();
  if (view) {
    scoped_ptr<FrameSubscriber> frame_subscriber(new FrameSubscriber(
        isolate(), view, callback));
    view->BeginFrameSubscription(std::move(frame_subscriber));
  }
}
void WebContents::EndFrameSubscription() {
  const auto view = web_contents()->GetRenderWidgetHostView();
  if (view)
    view->EndFrameSubscription();
}
void WebContents::OnCursorChange(const content::WebCursor& cursor) {
  content::WebCursor::CursorInfo info;
  cursor.GetCursorInfo(&info);
  if (cursor.IsCustom()) {
    Emit("cursor-changed", CursorTypeToString(info),
      gfx::Image::CreateFrom1xBitmap(info.custom_image),
      info.image_scale_factor);
  } else {
    Emit("cursor-changed", CursorTypeToString(info));
  }
}
void WebContents::SetSize(const SetSizeParams& params) {