Fix DistShardCacheHash initialization
Fix DistShardCacheHash initialization

InitializeCaches() method may prematurely set
performedInitialization without actually creating
DistShardCacheHash.

Fix makes sure flag is set only if DistShardCacheHash is created successfully.

Also introduced a new memory context to allocate aforementioned hash tables.
If allocation/initialization fails for any reason we make sure
memory is reclaimed by deleting the memory context.

citusdata/citus,citusdata/citus,citusdata/citus,citusdata/citus,citusdata/citus