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.
Maybe someone overwrote it because it was layout-dependent and by 
overwriting it he/she introduced his/her own keyboard layout.

> Why would one overwrite the basic code? The only useful function with
> logic that the class has is press(). And why would you want to
> overwrite it then? You can simply buy a new PC chassis then (referring
> to my example ;) ) You can inherit it and append new functions, as i
> stated above. but then it doesnt need to be virtual.