Use templated singleton class for Engine implementation
Do not manage MPI state inside libgcm
Do not forward arguments in Singleton::getInstance