Floating point handling in UniformSnapshot

This change brings:

* fixes an issue in both `UniformSnapshot#getValue(dobule)` and `WeightedSnapshot#getValue(double)`, where `Double.NaN` could slip past argument verification resulting in `ArrayIndexOutOfBoundsException: -1`. `Double.NaN` is always falsy when compared to a number, per Java Language Spec.
* remove a minor code smell with use of floating point number for array indexes in `UniformSnapshot#getValue(dobule)`
* add basic tests for argument verification for `#getValue(double)` in both `UniformSnapshot` and `WeightedSnapshot`


Edit: Added fix for a similar issue in WeightedSnapshot.