Adds support for HT16K33 LED Matrix devices

Now with example and devices refactored as controllers, plus better re-use of code
That's a kludge that I meant to remove. It's because the send function needed to be LedControl.prototype.send rather a function in the controller because there were unit tests that were spying on that directly (they were testing that the LedControl constructor initialized the matrix correctly by spying on the args to send). 
I created doSend as a workaround so send could continue to exist in the prototype while having completely different actual implementations in each controller. However, I rewrote one of the tests that was spying on the prototype function to test the initialize method directly, so I can probably do the same with the remaining test(s) using LedControl.prototype.send, and get rid of doSend altogether. I'll try that later today.