Fix double-activation adding excessive event listeners

If interact was attained multiples times without balanced releases, then
activate(true) would be called multiple times, and multiple event
listeners would be added for keydown and keyup. When released, there
would be other listeners still active. Consequentially, typing into
voxel-console (for example) would trigger unintended key events. Now we
check if we are already activate before activating, and vice versa.