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