It is possible that DistributedEngineComm can get the Stats object from
an MQE object and the MQE object freed before it's stats object is
passed to InetStreamSocket.
This patch makes sure that DistributedEngineComm gets a reference to MQE
instead of the pointer to the Stats object in another reference.
Therefore making sure that the Stats object still exists in
InetStreamSocket.
This does the following:
* Switch resource manager to a singleton which reduces the amount of
times the XML data is scanned and objects allocated.
* Make the I_S tables use the FE implementation of the system catalog
* Make the I_S.columnstore_columns table use the RID list cache
* Make the extentmap pre-allocate a vector instead of many small allocs