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'd rather prefer to just kill the layout-dependency and provide people 
with an optional way to bind the HID keyboard to a layout - because the 
(potentially unused) layout that ships with the HID core eats more flash 
than some virtual methods.

> My opinion is to save flash. Thats an insane amount of flash. And they
> are complaining about the huge delta. So one have to decide now. I'd
> at least make the new functions NOT virtual. And the old... i'd also
> remove. I am not sure but can't you still overwrite non virtual
> functions anyways?