feat(Debounce): customisable debounce

wrapped out scoped functions in a factory
created a provider
injected the factory in the directives