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.
If this patch contains API incompatible changes, incrementing the major version would communicate this and prevent dependent projects from pulling incompatible changes automatically.

As is, this communicates that new features were added in a backwards compatible way.