[BB10-internal] Move support for socket binding from QUdpSocket to QAbstractSocketPrivate

(backport of 03f852cb47d508d98aa90f501e9b7f4214e8ad8b)
This is a backport of a Qt5 commit, moving the bind method to
QAbstractSocketPrivate to retain binary compatibility, yet still
being able to use it from the HTTP layer (i.e.
QHttpNetworkConnectionChannel).

Task-number: QTBUG-121
Change-Id: I733efe90ea70c5774971f11d6a2054c84b467988
Signed-off-by: Peter Hartmann <phartmann@rim.com>
[BB10-internal] QAbstractSocket: delay bind for TCP and SSL sockets

... because we delete the socket engine anyhow when connecting; so we
just store the local address, port and bind mode and bind after we
deleted the socket engine and before we connect to the server.

*caveat*:
DNS traffic is still flowing over the standard interface, because there
seems to be no way to tell getaddrinfo() which route to use.

This change also requires the following changes:
- the socket engine needs to allow connections when in BoundState
- in bind(), we need to always set the local address and port from
  the socket engine, so that in case the bind() failed we clear the
  address and port again.

Change-Id: I883199a7869effc3a66f0ded37a949ba7cd95b3d
[BB10-internal] QNetworkConfiguration: store list of host addresses

... which can be populated by the bearer plugin.

Change-Id: Ibfa92eb7e480ef8c75b90f1dc0751c938d7afda7
[BB10-internal] BB10 bearer plugin: populate list of host addresses

... so the sockets will know which address to bind to in case a non-
default interface should be used.

Change-Id: Ice0f946bf265fda50bd538a1f26d5fdd7a0dbd70
[BB10-internal] QNetworkAccessManager: store QNetworkConfiguration instead of identifier

In case a network session is not required, we need access to the
configuration object rather than to the QString. Also, only create a
session if the configuration manager needs one.

Change-Id: I05945525ce8247e343d0bebd7ec15e0e162ed826
[BB10-internal] HTTP internals: store QNetworkConfiguration to be set on the socket

The QNetworkConfiguration can be set via the QNetworkAccessManager
and needs to be set on the socket, e.g. when preferring cellular
traffic over Wifi.

Change-Id: Ia2d9ed8cdc29db77ca5d01b462aab65c72cca394
[BB10-internal] QHttpNetworkConnectionChannel: set bind addresses on the socket

... and use it in QAbstractSocket. By the time we connect the socket
we do not know yet whether we will need an IPv4 or IPv6 bind address,
so we set both as properties on the socket and decide after host name
lookup and right before connecting.

Change-Id: I2be6ab4ab84e7e799158d7f42443337ad37b4e72