USB: Generalize logic for debug transfers used within KDL.

Pull debug transfer methods into the base BusManager class and
implement them for UHCI and EHCI. This makes it possible to have a
single debugger command installed by the USB stack instead of HCI
specific ones.
usb_keyboard: Simplify to generalized usb_process_transfer.
USB: Implement usb_clear_stall kernel debugger command.

It constructs a clear feature request for the endpoint halt selector
and sends the request using debug transfers. Clearing a stall condition
can be done safely and has one nice side effect: it reinitializes the
data toggle to a known state. This command can therefore be used when
a pipe is possibly used from userland as well and the data toggle may
therefore be out of sync.
usb_keyboard: Try clearing endpoint stall on transfer failure.

As the keyboard is used from usb_hid in the userland as well, we quite
probably are not in sync with the data toggle. Clearing the stall
should restore the toggle and make things work.
UHCI: Reject request debug transfers on control pipes.

Requests aren't handled in the debug transfer code path and would
end up in wrongly constructed descriptor chains.