Moved call to CreateServiceManager to Init to allow dependency injection to take place

Currently `CreateServiceManager` is called from the constructor. This is causing `CreateServiceManager` overrides that are expecting a dependency-injected value to not work well due to `CreateServiceManager` got called even before the injected value can be taken out by our code.

p/s: On top of that, I think the parameterless protected constructor should be made private since it does not look as if it was meant to be used in the first place.