* 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/node_bindings.cc
resources_path.Append(FILE_PATH_LITERAL("electron.asar"))
          .Append(process_type)
          .Append(FILE_PATH_LITERAL("init.js"));
  args.insert(args.begin() + 1, script_path.AsUTF8Unsafe());
  std::unique_ptr<const char* []> c_argv = StringVectorToArgArray(args);
  node::Environment* env = node::CreateEnvironment(
      node::CreateIsolateData(context->GetIsolate(), uv_loop_, platform),
      context, args.size(), c_argv.get(), 0, nullptr);
  if (browser_env_ == BROWSER) {
    
    
    context->GetIsolate()->SetMicrotasksPolicy(v8::MicrotasksPolicy::kExplicit);
  } else {
    
    
    context->GetIsolate()->SetMicrotasksPolicy(v8::MicrotasksPolicy::kScoped);
  }
  mate::Dictionary process(context->GetIsolate(), env->process_object());
  process.Set("type", process_type);
  process.Set("resourcesPath", resources_path);
  
  if (browser_env_ != BROWSER)
    process.Set("_noBrowserGlobals", resources_path);
  
  base::FilePath helper_exec_path;
  base::PathService::Get(content::CHILD_PROCESS_EXE, &helper_exec_path);
  process.Set("helperExecPath", helper_exec_path);
  return env;
}
void NodeBindings::LoadEnvironment(node::Environment* env) {