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
Step 3 remove interrupt blocking from other funcs
Merge pull request #5 from kaffeemonster/usb_lowlat

Step 3 remove interrupt blocking from other funcs