feat: use task_result to indicate blocking There should be no spin loops inside of the interrupts, so this change removes them, and instead uses a result system that has WOULD_BLOCK result. When this result is returned, it is expected there was no side-effect and the function can safely be reran later.
feat: implement enumeration fully
feat: implement usb devicd cdc descriptors, init, setup
feat: move all sending instructions to generic send functions
feat: implement most of enumeration
feat: implement simple control usb read, writes