Significant refactor

Hi! Thanks for writing hidstream—lots of good work here that's saved me a ton of effort. I've taken a crack at adding the rest of the keycodes as well as making some (sorry!) breaking changes to the packets that are returned. Since this is a significant refactor which additionally changes some code styling, I totally get it if you'd rather not merge. Let me know if so, and I will maintain a separate fork.

Summary below:

Raw parser is now raw.
Keyboard parser is what was formerly raw.

Majority of keycodes now work.
Modifier keys are now reported differenly. The data packet has helper methods
... this is a potentally breaking change.

'use strict;' and linted.
I thought about it, though I'm not sure about the advantages... Downsides though:

  * Maps are string-keyed, not number-keyed.
  * Though hashes are fast, switches are faster.