- Electron version: 0.36.12
- Operating system: OSX

There are two problems with `expirationDate`.
### First Problem

`expirationDate` is not returned on non-session cookies.

``` javascript
// not setting session here so it should default to false
var obj = {
  name: 'foo',
  value: 'bar',
  path: '/',
  expirationDate: 2093792393, // 20 years in the future
  url: 'http://localhost/'
}

var cookies = win.webContents.session.cookies

cookies.set(obj, function(err){
  cookies.get({name: "foo"}), function(err, cookies){
    cookies[0].name === 'foo' // => true
    cookies[0].session === false // => true

    // we're missing the expirationDate property!
    cookies[0].expirationDate === undefined // => true
  })
})
```
### Second Problem

When a cookie is marked as a `session` cookie the `expirationDate` property is returned as `0` but it should not be returned at all.

``` javascript
var obj = {
  name: 'foo',
  value: 'bar',
  path: '/',
  session: true, // marking session as true
  url: 'http://localhost/'
}

var cookies = win.webContents.session.cookies

cookies.set(obj, function(err){
  cookies.get({name: "foo"}), function(err, cookies){
    // per the docs this should not have the
    // expirationDate property but it does
    // https://github.com/electron/electron/blob/master/docs/api/session.md#sescookiesgetfilter-callback
    cookies[0].expirationDate === 0 // => true
  })
})
```

atom/browser/api/atom_api_cookies.cc
atom::api::Cookies::Error val) {
    if (val == atom::api::Cookies::SUCCESS)
      return v8::Null(isolate);
    else
      return v8::Exception::Error(StringToV8(isolate, "failed"));
  }
};
template<>
struct Converter<net::CanonicalCookie> {
  static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
                                   const net::CanonicalCookie& val) {
    mate::Dictionary dict(isolate, v8::Object::New(isolate));
    dict.Set("name", val.Name());
    dict.Set("value", val.Value());
    dict.Set("domain", val.Domain());
    dict.Set("hostOnly", net::cookie_util::DomainIsHostOnly(val.Domain()));
    dict.Set("path", val.Path());
    dict.Set("secure", val.IsSecure());
    dict.Set("httpOnly", val.IsHttpOnly());
    dict.Set("session", !val.IsPersistent());
    if (!val.IsPersistent())
      dict.Set("expirationDate", val.ExpiryDate().ToDoubleT());
    return dict.GetHandle();
  }
};
}  
namespace atom {
namespace api {
namespace {
bool MatchesDomain(std::string filter, const std::string& domain) {