Allow multiple xmpp client connections from same IP

Motivation:

A slightly different personality of the vRouter agent is used to manage
physical routers such as TOR switches and DC Gateways. In this scenario
there are multiple instances of agent process running on a given server.
Hence it's necessary for the xmpp server to allow multiple connections
from the same IP address.

Implementation:

The ConnectionMap in the XmppServer was already keyed by Endpoint. The
Endpoint is now initialized to the IP address + port instead of always
setting the port to 0. This allows multiple XmppServerConnections from
the same IP to be in the ConnectionMap.

The ConnectionEndpointMap in in the XmppServer used to be keyed by IP
address. Since an IP address no longer uniquely identifies an Endpoint
the map is now keyed by the Endpoint name.  The Endpoint name is known
when the xmpp server receives an Open message from the client.

Associate the XmppServerConnection with an XmppConnectionEndpoint based
on the endpoint name when an Open message is received.  If the endpoint
already has another connection associated with it, the new connection is
terminated. The association is cleared when the XmppServerConnection is
being deleted via LifetimeManager.

Since an endpoint name conflict can only be detected much later in the
life cycle of an XmppServerConnection, XmppServer::DequeueConnection is
only used to detect duplicate IP address + port combination. This should
not happen normally, but we still have a paranoid check.

Testing:

Parametrize tests in bgp_xmpp_basic_test so that all tests are run with
agents that have unique IPs and agents that the same IP.

Add a couple more tests to bgp_xmpp_basic_test to check that duplicate
endpoint names are handled correctly.  These tests are paramterized in
the same manner.

Change-Id: Ifb6a2d62fc83889e1da08afde7c9bf01cbb392c9
Merge "Allow multiple xmpp client connections from same IP"