Updated version of Gustavo

This pull request is really a huge overhaul so I understand if it just gets closed. I can move the code to a new repo.

This update includes several changes to the code structure itself, as well as introduces throttled and debounced events. Keyboard events will be automatically debounced for an optional time (defaults to 750ms), while all other events will fall within the throttled range (again, timer is an option so this could effectively be cancelled.)

I did try to keep the overarching idea and structure very similar in terms of how the invocation was done and the options used although I did change up the prototype a bit and created a few new pieces.

I do not believe this is *the* version, as more validation pieces should be put in as well.

Also added a gitignore file.