Fixed handling of extended usages.

Prior to this, if an extended (i.e. 4-byte) usage was specified,
then the page number portion would be discarded and the current
global page number would be used instead. An extended usage is
fully specified (i.e page AND usage), so the global page number
is irrelevant.
Decoded INPUT array items better.

Contrary to the specifications, it appears that INPUT array items can
(in addition to the Data/Constant, Array/Variable and Absolute/Relative
flags) be affected by the Preferred/No Preferred State and No Null/Null
flags.

In the Device Class Specifications for Human Interface Devices document,
Section 6.2.2.5 "Input, Output, and Feature Items" it is stated:

  "If the Input item is an array, only the Data/Constant, Variable/Array
  and Absolute/Relative attributes apply."

...but the example in Appendix A.3 Radio Buttons of the HID Usage
Tables specification implies otherwise.
Added check for at least one Application Collection

Section 6.2.2.6 "Collection, End Collection Items" of the
specification states that:

   "Collection items may be nested, and they are always optional,
    except for the top-level application collection"

This change adds a check for that compulsory top-level Application Collection.
Fixed bug in choosing a name for array fields.

The name being assigned was from the last collection name seen
in the entire report descriptor rather than the name of the
collection that actually contained the field.
Added more examples from Appendix A of the HID Specification.