Javascript setTimeout and setInterval replacement, with advanced options and debounce ability.