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.
Because the existing API is more or less only the press() implementation.

I've got a very simply question:
Can we access the KeyReport _keyReport; if we inherit Keyboard_?

I am a bit confused now, tell me if i am wrong: If the keyReport isnt protected we cant access it at all so it doesnt make any sense to make any function virtual because there is nothing that we could implement to modify the report?