Bug 939318 - Detect network interface changes on Windows. r=mcmanus

Now supports IPv6 as well if a new enough windows version is used.
Which notification function to use is detect at run-time.

Now sends CHANGED event if the online interface(s) are different in any
way since it was previously checked and considered UP. CHANGED is sent
before UP in case both are detected. It does not send any CHANGED events
during the first 2 seconds after startup.

nIOService: split up the network event receiver function from the
network status init function and have the event receiver act on the
incoming event.

DNSservice: acts on network changes (flushes the host cache and restarts
ongoing name resolves)

HttpHandler: acts on network changes
Bug 939318 - Find and close HTTP connections without traffic after network change. r=mcmanus

SPDY/http2 connections get a ping and be allowed N seconds to respond.

Active HTTP connections will be allowed N seconds to get traffic, if they
don't afer N seconds they get closed to avoid risking stalled transfers.

N is 5 by default: pref is "network.http.network-changed.timeout"
Bug 939318 - Have protocolproxy service act on network change. r=mcmanus

Reloads the PAC on network change, but avoids the reload if the
specified PAC URL is a file: or a data: one - as those are not likely to
have changed just because the network changed.
Bug 939318 - Have websockets act on network interface changes. r=mcmanus

If there's no outstanding PING, send a new to make sure the connection
is still alive and fine.
Bug 939318 - Send a network changed event when returning from sleep. r=mcmanus

Coming back from hibernation, the network situation is unknown and may
have changed since the computer went into sleep.
Bug 939318 - Introduce the "network.notify.changed" prefs. r=mcmanus

Makes it possible to disable 'changed' events.

Disable the network changed event in test_ping_aboutnetworking.js