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.
So you mean if we dont use the return value it doesnt get compiled?

Anyways: may you show us the code? I can't really imagine how you'd implement this, since usb banks are only up to 64 bytes. You might can change the report size very easy for the API but the HID report descriptor doesnt change at all so i am wondering how you would do it then. I might be wrong, so please give me an example to understand it better :)