* Output of `node_modules/.bin/electron --version`: v2.0.8
* Operating System (Platform and Version): macos 10.13.6

**To Reproduce**
1. `protocol.interceptStreamProtocol` to handle requests from electron
2. In the callback, give a header like:
```
callback({
  headers: {
    'Set-Cookie': ['foo', 'bar', 'baz']
  }
})
```
3. Request a url and inspect chrome dev tools


**Expected Behavior**
In dev tools you can see multiple set-cookie headers, and multiple cookies get set.

**Actual behavior**
No cookies are set.

---

**To Reproduce**
With a sample repo:


1. clone / checkout the branch I'm on

    ```
    git clone git@github.com:ibash/nativefier.git
    cd nativefier
    git checkout offline_2
    ```

1. install dependencies and build nativefier

    ```
    yarn install
    cd app
    yarn install
    cd ..
    yarn build
    ```

1. package an example app and then run it

    ```
    node lib/cli.js --name "Queue Offline"  "https://safaribooksonline.com"
    ./Queue\ Offline-darwin-x64/Queue\ Offline.app/Contents/MacOS/Queue\ Offline
    ```

1. open dev tools in the app

1. inspect a network request

**Expected Behavior**
All the network requests should have three headers: "TEST: first", "TEST: second", "TEST: third"

**Actual behavior**
A single header like: "TEST: first, second, third"

---


**Additional Information**
The problem is that `Converter<net::HttpResponseHeaders*>::FromV8` expects each header to only have a single string value,  [see this line of code](https://github.com/electron/electron/blob/0e3b2d92d7de5e1d14051c7daf930639cc34c51f/atom/common/native_mate_converters/net_converter.cc#L190).

Oddly enough converting headers _to_ v8 is correct, and handles multiple headers with the same name [as a list](https://github.com/electron/electron/blob/0e3b2d92d7de5e1d14051c7daf930639cc34c51f/atom/common/native_mate_converters/net_converter.cc#L163).

As far as I can tell there's no way to actually respond with multiple header values with the same name.

Last but not least, I found you can crash electron if you send a header value like: `{bar: 'foo\0 bar: foo2'}`
atom/common/native_mate_converters/net_converter.cc
scoped_refptr<net::X509Certificate>* out) {
  auto cert_list = net::X509Certificate::CreateCertificateListFromBytes(
      data.c_str(), data.length(),
      net::X509Certificate::FORMAT_SINGLE_CERTIFICATE);
  if (cert_list.empty())
    return false;
  auto leaf_cert = cert_list.front();
  if (!leaf_cert)
    return false;
  *out = leaf_cert;
  return true;
}
}  
v8::Local<v8::Value> Converter<const net::AuthChallengeInfo*>::ToV8(
    v8::Isolate* isolate,
    const net::AuthChallengeInfo* val) {
  mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
  dict.Set("isProxy", val->is_proxy);
  dict.Set("scheme", val->scheme);
  dict.Set("host", val->challenger.host());
  dict.Set("port", static_cast<uint32_t>(val->challenger.port()));
  dict.Set("realm", val->realm);
  return mate::ConvertToV8(isolate, dict);
}
v8::Local<v8::Value> Converter<scoped_refptr<net::X509Certificate>>::ToV8(