feat: allow skipping queue for larger memory moves
feat: allow reading larger packets without data loss
chore: move firmware to firmware/ folder
feat: implement cdc application layer, fix enumeration
chore: fix packing on x86_64
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.
docs: add documentation comments to most functions
feat: implement usb devicd cdc descriptors, init, setup