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.
So you're advertising an inconsistent public API with some virtual and 
some non-virtual methods?

> I think this is the point where we can save a lot of flash. The
> Keyboard is nowhere passed in the source or inherited. And I dont know
> why users should overwrite these functions. Its not worth the flash
> size. And since they are new (the keycode functions) they are not used
> anywhere yet.