Affects all supported Electron versions and platforms and has been reported and closed before [here](https://github.com/electron/electron/issues/5897) in 2016.

**Expected Behavior**
This should not have any side effects:
```typescript
const { screen } = require('electron');
```
**Actual behavior**
However it gives an error:
`Error: Cannot require "screen" module before app is ready`

As well as the undesired side effects, the error is pretty poor as we're not even requiring the screen module, we're simply accessing the property.

This also means the docs ask developers to do unnecessary complicated things like:
```
const electron = require('electron')
const { app, BrowserWindow } = require('electron')

app.on('ready', () => {
  let displays = electron.screen.getAllDisplays()
```

**Additional Information**
The session API cannot be used before app ready, but can be required without side effects:
```
// This doesn't result in an error
const { session } = require('electron');
```

The APIs that are unavailable before app ready should at least behave consistently.

atom/browser/api/atom_api_screen.cc
: screen_(screen) {
  screen_->AddObserver(this);
  Init(isolate);
}
Screen::~Screen() {
  screen_->RemoveObserver(this);
}
gfx::Point Screen::GetCursorScreenPoint() {
  return screen_->GetCursorScreenPoint();
}
display::Display Screen::GetPrimaryDisplay() {
  return screen_->GetPrimaryDisplay();
}
std::vector<display::Display> Screen::GetAllDisplays() {
  return screen_->GetAllDisplays();
}
display::Display Screen::GetDisplayNearestPoint(const gfx::Point& point) {
  return screen_->GetDisplayNearestPoint(point);
}
display::Display Screen::GetDisplayMatching(const gfx::Rect& match_rect) {
  return screen_->GetDisplayMatching(match_rect);
}
#if defined(OS_WIN)
static gfx::Rect ScreenToDIPRect(atom::NativeWindow* window,
                                 const gfx::Rect& rect) {
  HWND hwnd = window ? window->GetAcceleratedWidget() : nullptr;
  return display::win::ScreenWin::ScreenToDIPRect(hwnd, rect);
}
static gfx::Rect DIPToScreenRect(atom::NativeWindow* window,