call the debounced function immediately (on the first call), if the debounced function is called several times also call the function when the timer runs out, but only if this is not the first call
forked version of:
an improved debounce implementation
blogged about here http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html