xinput: Cleanup implementation of XI up to v1.4

- Structural changes:
  * indent with spaces only (replaced tabs)
  * indent attributes
  * move structures in front of the first request using it
    (Otherwise c_client.py would generate uncompileable code if we fix
     the uninterpreted lists.)
  * add version-controlled section comments (types, requests, events,
    errors) and move structures into their corresponding section
  * sort events and eventcopys by number

- Additions:
  * add various missing enums and structs (i.e. DeviceChange,
    DeviceControl, DeviceName, ...)
  * uncomment commented out requests
  * linked in various enums into fields (via enum or altenum)

- Other changes:
  * link to the txt specification in the git repo
  * fixed comments for "uninterpreted lists"

- API CHANGES:
  * Request: GetDeviceMotionEvents
    The reply contains a list of events (of coordinates). So, we rename
    num_coords to num_events. The field is called nevents_return in the
    specification. The list was commented out anyways, so the rename
    shouldn't affect that much.
  * Request: SendExtensionEvent
    The list 'events' is a mask, make it a CARD8 like every other mask.
  * Events: FocusIn/Out
    Those ones haven't been named properly. They are called
    DeviceFocusIn/Out in the specification. In XI2 the names FocusIn/Out
    are used to introduce new events and cause name clashes. So, we have
    to rename the existing FocusIn/Out and give them their proper names.
  * Structures: *Feedback{Ctl,State}
    Rename the field id to feedback_id, as it's called in the spec. The
    only lists using those structs are commented out yet. So, this might
    not be called an api break.
xinput: Add XI v1.5

New:
- Requests
  * ListDeviceProperties
  * ChangeDeviceProperty
  * DeleteDeviceProperty
  * GetDeviceProperty

- Enum
  * PropertyFormat

- Event
  * DevicePropertyNotify

The requests ChangeDeviceProperty and GetDeviceProperty use switches to
return a list depending on the format (8bit, 16bit and 32bit) of the
property value.
We reuse the <bitcase> here. Which is possible, because the format
values don't have equal bits. But, this is rather a hack and must be
changed when the value test (a <case>) for switches is implemented.
Add support for X Generic Extension events

With these patches, we are able to mark an XGE event as such and
generate the correct header for it.

Additionally, in xtypes.py we inject a full_sequence field after the
32byte boundary. libxcb uses it for additional informations and would
overwrite event fields if we wouldn't have it.
The full_sequence field will be injected into every XGE event, even if
it is not necessary (event has no fields behind the 32byte boundary),
for consistency.

XGE events can be found in the X Input Extension v2++.
xinput: Add XI v2.0

Introduced with v2.0 have been various new types, structures, 21
requests and 12 XGE events.

All new requests have the "XI" prefix in the name. This prefix can be
found in the spec too and avoids name clashes with requests found in
prior versions of XI (at least that's (Un)GrabDevice).

All new events are X Generic Events. They've a different header then
"normal" events. Therefor we've to mark them with the attribute 'xge'
set to 'true'.

To prevent another name clash one new structure had to be prefixed,
too: XIDeviceInfo.
xinput: Add XI v2.1

Introduced with v2.1 has been Raw event support and therefor 5 new
events: Raw{Key,Button}{Press,Release} and RawMotion.
xinput: Add XI v2.2

Introduced with v2.2 has been Multitouch support and therefor 7 new
events: (Raw)Touch{Begin,Update,End} and TouchOwnership.
xinput: Add XI v2.3

Introduced with v2.3 has been Pointer Barrier support, including a new
request (XIBarrierReleasePointer) and 2 events (Barrier{Hit,Leave}).
xinput: Unlock uninterpreted lists

The 'uninterpreted_data' lists have been added to pad the structure at
runtime and thereby making lists of such structures iterable.

This is a temporary solution until it is possible to nest a <switch> in
a <struct> correctly.
Add support for reference to list to <popcount>

This adds an optional 'ref' attribute to <popcount>. Which can be used
to reference a list like it's done for <sumof>.

Various events in XI2 have lists which rely on a <popcount> for a list.
xinput: Use <popcount> with reference on a list

Enable any previously uninterpreted list, where a <popcount> on a list
is necessary.