Fix offline detection (bug 1014508)

https://bugzilla.mozilla.org/show_bug.cgi?id=1014508

There were 2 issues that I fixed:
1. By design, consumer_info returns a promise that never fails. This means we can't use it to check whether we are offline or not, so I reverted my commit from yesterday that did this.
2. I couldn't get `XMLHttpRequest` to work properly (checking `readyState` is **not** enough, I ended up getting status 0 errors, even when just doing a `HEAD`) so I switched to using a `TCPSocket`, since we are a privileged app. We should benefit from the default timeout and it should be fast enough, no data is transfered, we just attempt to open a connection to our CDN.

Please test locally with simulator / device. Note that because it depends on `TCPSocket`, which is a privileged API, my patch breaks Desktop. If we want this to work, let's talk, we can maybe add a try/catch to do something dumb on desktop.

FWIW, to make the simulator offline:
- Debug your app in the simulator
- Open `about:config`, set `devtools.chrome.enabled` to `True`
- Refresh the App Manager. In the Devices tab, you should see "debug main process" button
- In the console attached to your app, write `Services.io.offline = true`
- Your simulator should now be offline. Reset with  `Services.io.offline = false` (doh)