I tired with the offscreen mode and here are the problems I found:
- [x] <del>The `data` of `paint` event is empty when loading simple local pages.</del>
- [x] The size of `data` is wrong, current implement uses the size of pointer (`sizeof(bitmap_pixels)`).
- [x] Crashes when opening devtools for offscreen window.
- [x] We should probably show a dummy view indicating it is offscreen instead of provide NULL.
- [x] The offscreen window is affecting the rendering of other windows. Try running `./script/test.py -g offscreen` and then refreshing the window.

/cc @gerhardberger @brenca

atom/browser/osr/osr_render_widget_host_view.cc
compositor_->SetRootLayer(root_layer_.get());
  ResizeRootLayer();
}
OffScreenRenderWidgetHostView::~OffScreenRenderWidgetHostView() {
  if (is_showing_)
    delegated_frame_host_->WasHidden();
  delegated_frame_host_->ResetCompositor();
#if defined(OS_MACOSX)
  DestroyPlatformWidget();
#endif
}
void OffScreenRenderWidgetHostView::OnBeginFrameTimerTick() {
  const base::TimeTicks frame_time = base::TimeTicks::Now();
  const base::TimeDelta vsync_period =
      base::TimeDelta::FromMilliseconds(frame_rate_threshold_ms_);
  SendBeginFrame(frame_time, vsync_period);
}
void OffScreenRenderWidgetHostView::SendBeginFrame(
    base::TimeTicks frame_time, base::TimeDelta vsync_period) {
  base::TimeTicks display_time = frame_time + vsync_period;
  base::TimeDelta estimated_browser_composite_time =
      base::TimeDelta::FromMicroseconds(
          (1.0f * base::Time::kMicrosecondsPerSecond) / (3.0f * 60));
  base::TimeTicks deadline = display_time - estimated_browser_composite_time;
  render_widget_host_->Send(new ViewMsg_BeginFrame(
      render_widget_host_->GetRoutingID(),
      cc::BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline,
                                 vsync_period, cc::BeginFrameArgs::NORMAL)));
}
bool OffScreenRenderWidgetHostView::OnMessageReceived(