step 1, save UENUM in interrupt routines

and yes, move some shared code...
prevent conflicts with upstream
Step 2, do not run putchar with interrupts off
Merge pull request #4 from kaffeemonster/usb_lowlat

Usb lowlat