This commit adds usbdev, a common API to interface USB peripheral devices. The API is split into two parts, one for the USB device itself and one for the USB endpoint.