Refactor ExponentiallyDecayingSample.update; add unit tests
Snapshot() takes an iterable not just a list
Replace RBTree with heapq
This removes a dependency and should be at least as efficient.  Note that there
is a subtle semantic change: duplicate priorities are now allowed.  This is
arguably the correct behavior; before a very high priority sample could be
ejected simply because of a random collision.  Now the lowest priority sample
will always be removed.
Fix rescaling
Refactor weight calculation
Determine rescale threshhold based on alpha
ZEN-7131: Fixes for ExponentiallyDecayingSample

Replace RBTree with heapq, ensure rescale is called, set rescale_threshold based on alpha
Merge pull request #1 from jafcrocker/master

ZEN-7131: Fixes for ExponentiallyDecayingSample