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 can think of a lot of reason why one would prefer to just inherit from 
the keyboard class. Just have a look at all the underlying code you can 
reuse by simply overwriting the the existing methods - instead of 
reinventing the wheel altogether.

> 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.