Implement hidraw backend

Here's a new pull request with fixes and squashed commits.