Refactor axis events

@Geeber ref #19

This simplifies how buttons are handled - now they are simple boolean inputs which generate `:button/press`, `:button/release`, and `:button/hold` events with no `:value`. Note that `hold` replaces `repeat`.

Axes are now treated as a different class of input with a real number input value. Whenever the input is not the default state, axes emit `:axis/direction` events with `:axis` and `:value` entries.

I tested by plugging in the SNES controller and working through all the modes in the local simulation. Do you want to pick up the branch and add the explicit d-pad code? I left a TODO comment to show you where I think it should go.