Correctly handle samples with heavily clustered values (gh-11)

If a sample contains many values that are clustered around a single
value, this throws off classifyOutliers.

Before this change, we could easily end up considering a value as
both high and low, thereby counting it in more than one bucket at
a time (which should not happen). As a result, we would sometimes
report more outliers in a data set than sample values.

With this change, every outlier should be classified into a single
bucket. Our estimate-based weighted average method can still lead
to the wrong bucket being chosen, but at least there should be only
one bucket now!
Finally! A test suite!

Admittedly containing just one test, but it's a start.