* Electron version: All
* Operating system: All

### Expected behavior

`process.versions.electron` should be non-configurable

### Actual behavior

```js
process.versions.electron = '99.99.99'
```

Code such as the above will override the Electron version which can stop third party modules correctly recognising the Electron version.

### How to reproduce

Run the code above^^

The reason this is an issue is that other versions such as `process.versions.node` can not be configured / changed.
atom/common/api/atom_bindings.cc
dict.SetMethod("getCPUUsage", base::Bind(&AtomBindings::GetCPUUsage,
                                           base::Unretained(metrics_.get())));
  dict.SetMethod("getIOCounters", &GetIOCounters);
  dict.SetMethod("takeHeapSnapshot", &TakeHeapSnapshot);
#if defined(OS_POSIX)
  dict.SetMethod("setFdLimit", &base::IncreaseFdLimitTo);
#endif
  dict.SetMethod("activateUvLoop", base::Bind(&AtomBindings::ActivateUVLoop,
                                              base::Unretained(this)));
#if defined(MAS_BUILD)
  dict.Set("mas", true);
#endif
#if defined(OS_WIN)
  if (IsRunningInDesktopBridge())
    dict.Set("windowsStore", true);
#endif
  mate::Dictionary versions;
  if (dict.Get("versions", &versions)) {
    
    versions.Set(ATOM_PROJECT_NAME, ATOM_VERSION_STRING);
    versions.Set("chrome", CHROME_VERSION_STRING);
  }
}
void AtomBindings::EnvironmentDestroyed(node::Environment* env) {
  auto it =
      std::find(pending_next_ticks_.begin(), pending_next_ticks_.end(), env);
  if (it != pending_next_ticks_.end())
    pending_next_ticks_.erase(it);
}
void AtomBindings::ActivateUVLoop(v8::Isolate* isolate) {