ENH: Use a hashmap to avoid linear search for existing vtk connections
BUG: Fixed ctkVTKObjectEventsObserverPrivate::findConnection behavior for wildcards

When ctkVTKObjectEventsObserverPrivate::findConnection receives 0 parameter for an input then it cannot be used for retrieving an entry from the cache.
Then we have to do a linear search.
ENH: qvtkConnect and qvtkDisconnect performance improvement

Whenever a new connection is added or deleted, it's searched in the list of already existing connections using ctkVTKObjectEventsObserverPrivate::findConnection(). This findConnection() method is very slow if there are many connections, because the time-consuming ctkVTKConnection::isEqual() method is executed for each existing connection (before this commit, 40% of the time was spent in vtkConnection::isEqual while creating 10000 connections).

To solve this performance issue, added a ConnectionIndex structure, which stores a pointer to each connection object using a hash map. When searching for a fully specified connection, the ConnectionIndex is used to find the connection directly, instead of iterating through all the children.

Result of the optimization (ctkVTKObjectTest1):
Create 10000 connections: 2.343 sec => 1.019 sec (2.3x speed improvement)
Remove 10000 connections: 3.599 sec => 2.031 sec (1.77x speed improvement)

Conflicts:
	Libs/Visualization/VTK/Core/ctkVTKObjectEventsObserver.cpp
Merge branch 'vtkconnect-performance-improvement-consolidated'

* vtkconnect-performance-improvement-consolidated:
  ENH: qvtkConnect and qvtkDisconnect performance improvement
  BUG: Fixed ctkVTKObjectEventsObserverPrivate::findConnection behavior for wildcards
  ENH: Use a hashmap to avoid linear search for existing vtk connections