Rebased upstream, readded the minor changes I want to keep in CDC bootloader.