Orderly deletion of Xmpp objects in Agent while applying newly learnt
services via discovery.

A new set of services learnt via discovery with the present services
DOWN should result in orderly cleanup of Xmpp objects. Now we trigger
a managed delete of XmppClient object which will internally
delete the XmppClientConnection and XmppChannel object.

o Need to explicitly delete AgentXmppChannel, AgentIfmapXmppChannel,
  AgentDnsXmppChannel, XmppInit
o Note we reset XmppClient object from agent data-structure but
  the actual object can get deleted at a later time as part of
  the Managed Delete.
o Apply newly learnt services from discovery while the older
  objects are being deleted.

Xmpp Library Changes (Nischal Seth)
===================================
o Fix bug that may cause premature delete of XmppClientConection.
o XmppClientConnection::DeleteActor's MayDelete method should not
  return true if the XmppClient has no registered event handlers.
  It should only look at XmppClientConnection's receiver count.

      The above change uncovered a bug in NetworkAgentMock wherein the
  AgentPeer constructor registered for xmps::CONFIG on the channel but
  never unregistered.
o Add methods to XmppServerConnection and XmppClientConnection to
  return pointers to XmppServer/XmppClient as appropriate to avoid
  static_cast all over the place.

Change-Id: I1018b03b4f9124955b2be8cd0a851f0edd72030a
Merge "Orderly deletion of Xmpp objects in Agent while applying newly learnt services via discovery."