monitoring: Allow alerting on zero
Created by: ryanslade
We changed LessOrEqual and GreaterOrEqual to pointers so that we can determine the difference between a missing value and a value of zero.
We also introduced a "fluent" interface to make it easer to define alerts now that they contain pointers.
For example,
Alert{GreaterOrEqual: 10, For: 10*time.Second}
becomes
Alert().GreaterOrEqual(10).For(10*time.Second)