Dynamically allocate USB controller structures.

Have each controller type allocate its own data structure.

Also, implement freeing of unused uhci controller structures.
diff --git a/src/usb-ohci.h b/src/usb-ohci.h
index b7b2b29..0cadbd6 100644
--- a/src/usb-ohci.h
+++ b/src/usb-ohci.h
@@ -2,8 +2,7 @@
 #define __USB_OHCI_H
 
 // usb-ohci.c
-struct usb_s;
-void ohci_init(void *data);
+void ohci_init(u16 bdf, int busid);
 struct usb_pipe;
 void ohci_free_pipe(struct usb_pipe *p);
 struct usb_pipe *ohci_alloc_control_pipe(struct usb_pipe *dummy);