EHN: consider multiple skiplist classes for different datatypes
Right now, when we calculate something like a rolling max, if a float32 dataset is being passed in, it upcasts it to a float64.  This increases the memory requirements of a big dataset considerably.

This is due to the fact that the skiplist implementation only works with doubles.  Would you be opposed if I added instantiations for int32, int64, float32, uint64, uint32?

This way, we can avoid copies for big datasets (which take up a lot of memory, and time).

cc @kawochen 

xref #3007 
