Overhaul USB HID for Leonardo and Micro

This pull request includes the features from pull request 1488 and pull request 1391. I've somewhat overhauled the code to better match the surrounding code and a few features.

I've also added code examples for the less discoverable features.

If this pull request isn't "right" yet, I'd love feedback so I can improve it.
One thing i want to add is that even if you dont use the Keyboard, but use the Mouse for example it always compiles the Keyboard instance anyways. I think this is because of the virtual functions. Because if you use a Keyboard, the mouse isnt compiled. We cant avoid this anyways because we inherit the print class. But i am separating the HIDAPI now and maybe we can solve this with different .h/cpp files for the keyboard, mouse, etc. Its very important that we dont create instances of each class even if we dont use them.