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.
sizeof(KeyReport) does not do any good here as KEYREPORT_KEYCOUNT is 
used to define the size of KeyReport. And in addition 
(KEYREPORT_KEYCOUNT < sizeof(KeyReport)).

>>  //	Low level key report: up to 6 keys and shift, ctrl etc at once
>> +#define KEYREPORT_KEYCOUNT	0x06
>>  typedef struct
> 
> I'd use sizeof(KeyReport) here.