v1 initial commit

@lanetix/engineers @apolishch - CR Please.  Thanks.
you're assigning this to a global (well, module-scoped) variable which means that two instances of this library could not have different delay functions. same for the rest of your module-scoped variables. instead of doing this you should set these properties on `this`