HID: add user-space I/O driver support for HID from android-3.0 tree

This driver (apparently upstreamed and then backported to the
android-3.0 branch) is needed for Bluetooth HID support with the new BT
userland stack introduced in Android 4.2.  (Thanks to XDA user Deegan87
for noticing that BT HID support broke.)

This patch combines the following commits from the android-3.0 branch:

4409981 HID: uhid: introduce user-space I/O driver support for HID
ef5006b HID: uhid: add internal message buffer
191b032 HID: uhid: allow poll()'ing on uhid devices
b8dd3d9 HID: uhid: implement read() on uhid devices
d3444a8 HID: uhid: implement write() on uhid devices
6b1a4c7 HID: uhid: add UHID_CREATE and UHID_DESTROY events
e0ad830 HID: uhid: allow feeding input data into uhid devices
6645460 HID: uhid: forward hid report-descriptor to hid core
245fd8c HID: uhid: add UHID_START and UHID_STOP events
e458139 HID: uhid: forward open/close events to user-space
bd46634 HID: uhid: forward output request to user-space
715ee7c HID: uhid: forward raw output reports to user-space
c12e46f HID: uhid: implement feature requests
bd76675 HID: uhid: add documentation
db58898 HID: uhid: silence gcc warning
d4bad8b HID: uhid: Fix sending events with invalid data