merging in the new and improved USB code

It now uses isochronous like it should and gets packets every 10ms for the
control loops nicely. The gyro board code has also been reorganized so it is
much clearer and easier to maintain.