Make HealthCheckCallback injectable

Making HealthCheckCallback injectable instead of calling registerHealthCheckCallback removes the need to create custom providers that want to ensure registerHealthCheckCallback is called as part of DiscoveryClient instantiation. 

Also change a few @Singleton's to @FineGrainedLazySingleton