Separate out blink(1) commands into blink1.js.

Create a separate Javascript class that represents a particular blink(1)
device and encapsulates the usage of the chrome.hid API.
Welcome to "How Big is My HID Packet." Essentially, the blink(1) firmware (and documentation) is wrong. As it has its report descriptor set up it expects 8 byte packets *plus* a byte for the report ID. For an input or output report this would mean a 9 byte USB packet because the report ID is pre-pended to the HID report when transmitted over USB. The blink(1) uses feature reports though and there the ID is sent as part of the USB control transfer's SETUP packet and the payload is 8 bytes. Something in their HID firmware library sticks this onto the beginning of the buffer before the command is processed causing this confusion. I think this is also why the command responses are all sent offset by a byte. I thought it was a bug in Chrome until I checked what the firmware was doing.