Test and bugfix for upper percentile

According to my tests where was an offset bug due to a
`Math.Ceil(x + 0.5)` call instead of `Math.Floor(x + 0.5)`. This was an
incorrect implementation of the non-existent `math.Round(x)`.
Support for `lower`/negative percentiles

This fixes issue #18.