add in single timeout implementation of debounce

see http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html for explanation