On Gorenstein projective, injective and flat dimensions—A functorial description with applications