USB support

This is a big one, both in terms of complexity and impact.

In an ideal world, this will be kernel-agnostic, so that other projects can re-use most of our USB implementation. Redox has some basic USB support, should check out what it supports.

To start, just the HCI should be developed, using USB HID as an example usecase (which should be developed concurrently, to drive requirements).

Some links: