Included collection name in the generated C typedef structure name.

Also added a check for REPORT_ID of 0. That report id is reserved and should not be used.
Decoded the global values pushed or popped by PUSH/POP items.

Doing this highlighted some errors in the examples given in the
HID specification document (for instance, Appendix A.7 Desktop Tablet Example).

Also...
1. Annotated END_COLLECTION items with the collection name to make it easier
   to see which collection is being ended.
2. Checked that the REPORT_ID is in the range 0x01 to 0xFF. Other values are
   invalid.