Cast `server.address()` to a custom interface.
Cast `server.address()` to a custom interface.

Some older versions of the `node` typings weren't completely kosher, but we
needed to remain on them because the minimum Node.js  version we currently
support is v8.  I rolled those types back (from 10.x) for compatibility
reasons, but needed to make one commit to adjust some typings which had been
shuffled around, which I did in 72f410da46d683db3bfcdb98581b279abc5a020c.

Unfortunately, that seems like it has caused some problems.  Since the
`AddressInfo` exists on `net` in newer typings, but exists on `dgram` in
earlier typings, there's no clear type to land on right now.  We'll be fine
once we dump support for Node.js 8, but that's still some months away. (See
Apollo Server 3.x!).

Therefore, since TypeScript uses nominal types, we can just create a literal
interface here and cast to it, rather than using either `dgram.AddressInfo`
or `net.AddressInfo`, and we should be fine.  (Note that we don't want to
just use the default `net.address()` value because it can also be a `string`
in newer versions of the typings, but we only want the object-type format.

cc @rob3c (Thanks!)

Ref: https://github.com/apollographql/apollo-server/commit/72f410da46#commitcomment-34417953

apollostack/apollo-server