Cluster CacheProvider for jdbcconfig, and make cluster config event dispatch wait for acks.

One of the issues with outdated info (e.g. FeatureTypeInfo attributes) when querying
a cluster member is that the jdbcconfig catalog's ConfigDatabase uses a local cache
of CatalogInfo objects by default. Hopefully it uses a plugable mechanism to find a
CacheProvider. This patch introduces a cluster wide distributed cache based on a
HazelCast distributed Map so that all cluster members use the same cache.
The number of entries in the cache is unbounded but they expire and are evicted after
5 minutes of being last accessed.

The other issue is that a client modifying a CatalogInfo object through the REST API
to one cluster member, and immediately after querying (say, through WFS or REST) that
object to another cluster member, may see outdated info due to the HazelCast topic message
not having reached the second member or not having been processed yet (which forces
the geoserver catalog to clear any cached data especially in the ResourcePool, , but
also in the eclipse EMF schemas held on by the GeoServer WFS xml configuration objects).
This patch introduces an ack callback message so that the cluster member issuing the
change event can wait up to a reasonable period of time for other members to signal back
that they received and processed the event.
Make RemovedObjectProxy implement accept(CatalogVisitor)

RemovedObjectProxy is used to notify the local CatalogListener's
that anotehr cluster member has removed such CatalogInfo object.
Yet it didn't proxy the accept(CatalogVisitor) method so the
ResourcePool CatalogListener in charge of cleaning up locally
cached resources such as DataStore instances didn't have a chance
to run, leaving stale resources on every cluster node but the
one that performed the object removal.
Unit tests for cluster sync ack
Unit Tests for RemovedObjectProxy