Add debounce

Add a real debounce--includes pure functions and prototype methods, and optionally accepts a scheduler.

Close #17
Ah, I do like that.  I'll take a shot at revising