Add debounce

Add a real debounce--includes pure functions and prototype methods, and optionally accepts a scheduler.

Close #17