Thread safe access to HCAL conditions containers

Modified how HCAL conditions containers are used in order to be thread safe. The ```setTopo``` method of the containers is now non-const. Therefore to fully initialize a container read from the database, the container is copied and the copy gets the ```setTopo``` call. This copy is either done via an ESProducer or, for less used containers, by the module which requested the original container.