Generalize handling of extension devices

Instead of merging extension device data into the API's button data (as
previously done for the Sharp Shooter), programs can now access all
relevant data via a new interface. A small test program demonstrating
this for Sony's official Sharp Shooter and Racing Wheel extensions is
included.

Doing it this way is much more flexible than the previous approach,
also allowing support for other extension devices (especially custom
ones) without the need to mess around with the API's internals.