Use reflection to automatically load any classes implementing IService i...

...nterface, replacing old string switch

This commit will make it substantially easier to add future services, because any services implementing IService will be automatically loaded, if they are specified in the configuration file.  Although this method uses the "self-registering" factory pattern with reflection, the slowdown is minimal, because the classes are only loaded once during startup.

We could potentially convert the API handlers to use the same setup, depending on if we decide it is worth loading them all at startup, versus on-demand.