Adding custom algorithm support in Luminol anomaly detection

So in the `Metric` hierarchy we do `Metric.__init__()` rather than `super(ChildMetric, self).__init__`.

Can we be consistent? I personally prefer `Parent.__init__()` as it is easier to read but would rather use `super` but we aren't using Python 3 :(