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.
Oh, i havent checked how much the keycode thing adds. What i'd do then is to make the write(), press() etc like they were before and simply add these optional keycode functions as "raw" usage. This also means they can be implemented non virtual because they are just optional.

That's what i thought it was implemented for: optional use. I never actually checked the code size of the new implementation, thats what i wanted to do today probably. So if its optional we are free to make them non virtual and if users want to add different functions, they can still overwrite the write functions etc.

But i still dont get why one would like to overwrite them. Nothing depends on the keyboard class, one can simply implement its very own class. Use it or dont. I think i cannot explain it properly... I dont expect users will inherit the keyboard class (and overwrite the write() of course), they will rather implement a very new api if the provided isnt enough. Or they will just use the existing functions and just add more (like our keycode). But therefor you dont need any virtual function if you dont overwrite the write(). Users who overwrite the write() can just create a new API. Thats if you want to use an old PC, through everything out, color the case new and put new stuff inside. At least the name is the same. Not sure if this is useful.