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.
Why not create a whole new class if you use nothing of the existing API then? You simply overwrite the whole class implementation.

At least I'd make the keycode functions optional (leave the existing like they are) and make them not virtual, because they are optional. Users can use them or not or create new functions.