Remade the way buttons are handled.

Made a controler for keyboard and changed the function for checking keys
so it instead returns keys. POSSIBLE BUG: copying the set that the keys
are returned in doesn't work, gives an error about invalid access