- 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
const Cookies::GetCallback& callback,
                   const net::CookieList& list) {
  net::CookieList result;
  for (const auto& cookie : list) {
    if (MatchesCookie(filter.get(), cookie))
      result.push_back(cookie);
  }
  RunCallbackInUI(base::Bind(callback, Cookies::SUCCESS, result));
}
void GetCookiesOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
                    scoped_ptr<base::DictionaryValue> filter,
                    const Cookies::GetCallback& callback) {
  std::string url;
  filter->GetString("url", &url);
  auto filtered_callback =
      base::Bind(FilterCookies, base::Passed(&filter), callback);
  net::CookieMonster* monster = GetCookieStore(getter)->GetCookieMonster();
  
  if (url.empty())
    monster->GetAllCookiesAsync(filtered_callback);
  else
    monster->GetAllCookiesForURLAsync(GURL(url), filtered_callback);
}
void RemoveCookieOnIOThread(scoped_refptr<net::URLRequestContextGetter> getter,
                            const GURL& url, const std::string& name,
                            const base::Closure& callback) {
  GetCookieStore(getter)->DeleteCookieAsync(
      url, name, base::Bind(RunCallbackInUI, callback));
}
void OnSetCookie(const Cookies::SetCallback& callback, bool success) {