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.
I dont think that this solution is a good one. Because your HID report contains a lot of buttons etc and you simply dont use them. So what we could do is to remove these parts from the descriptor or just create two Mouse Apis with buttons for both. But this makes no sense at all, you can save a lot of bytes in the HID descriptor. And you also get a lot of devices in the device manager. Referring to Line 86 and further.