[!!!][BUGFIX] Hold Expires date as DateTime for Cookie

To avoid problems where the timestamp integer is out of integer
boundaries, the Expires date is held as a DateTime object rather than
an integer.

Additionally, a not set expiration date is handled as NULL since this is
more appropriate to its nature and the specification in the RFC.

The string representation of the Expires property is changed to be of a
format specified in RFC 1123 according to RFC 6265 Section 4.1
`sane-cookie-date`.

This is breaking since the Cookie constructor now expects a DateTime
instance for $expires and Cookie::getExpires() returns a DateTime
object rather than an integer as before, but can simply be circumvented
with `$cookie->getExpires()->getTimestamp()`, however it must be checked
to not be `NULL` then.

Change-Id: I09037b3cd8987acc09ba3ccb2a84e23762f69864
Releases: master