Handle uncaught exceptions from Clustering Services in HostTracker

There are couple of timer tasks in host tracker which use caches
provided by clustening services. If a container is deleted, then
the cache allocated to that container is also removed. Although
TimerTasks do get cancelled when container is deleted, but if it
happens during the execution of timer thread, then the task will
run to completion (even though it was cancelled) and may try to
access a cache which has already been deallocated.

The accessing of this deallocated cache will result in clustering
service exception which needs to be handled by timer tasks

Also adding toString methods to IPHostId and IPMacHostId for more
readable output when diplaying hosttracker data structures

Change-Id: Id1c481360a4ff71b6eb0afab3c030ef011ca7dcd
Signed-off-by: Maurice Qureshi <maquresh@cisco.com>
Merge "Handle uncaught exceptions from Clustering Services in HostTracker"