Revision of the USB Device module to make it more generic.

Now the USB module handles all of its own buffering and initiates its
own mailboxes. Accessor functions are provided to give out pointers to
mailboxes, and to allocate and free buffer memory.

The USB module now handles packets up to 64 bytes without caring how it
is formatted internally. It should be fairly easy to integrate this
module in another project.