More notifications

Lets make notification better.
- Notification is now a class we can instantiate
- add `Notification#metric_gauge`
- on each error_rate calculation, send metric_gauge for **error_rate**, **failure_count** and **success_count**
- add `Notification#notify_warning`
- notify a warning if the sleep window is smaller than the time_window
- force **sleep_window** to equal **time_window** if it is
too short.

I was thinking of a different structure for this method. What do you think of having two methods, one does the error_rate calculation, and the other one error_rate calculation + logging metrics, something like: error_rate and error_rate_with_logging. My problem is that I can't get an error rate without also logging a metric. I think the two behaviors should be separated.