Metrics service continues on error

MetricsService is now composed of TimerService instead of inheriting from it. This makes testing easier. Also, passing reactor and log to the instance for better testing
This is just supposed to be :param IReactorTime clock: -- RST doesn't allow any directives in the type field here.