In the existing bootloader, the USB device for upload (DFU protocol) is completely different from the USB device for Serial when the sketch runs.
Leaflabs have an excellent description of how the Maple bootloader works.
Basically, they initially tried to have the DFU and Serial USB device firmware in the bootloader, and for the bootloader code to continue to execute after the sketch was running ( as the bootloader code would handle serial USB for the sketch)
But basically that would not work on windows.
So the USB serial code was moved to the sketch.
Hence its possible to build a sketch for any generic board that has USB serial.
I have tried this on my stm32f103ZET and F103RCT boards and they do appear as serial devices on my PC and I can use Serial.print etc
However the problem is that every time you upload the sketch to a generic board, you then have to unplug and reconnect the USB otherwise windows doesn't now the board has been reset and the serial driver seems to get out if sync with the board.
And the same applies to the Maple bootloader. After the upload (using the DFU protocol), the bootloader shuts down all its USB code, and jumps to the start of the sketch in Flash memory.
However if the USB bus is not reset, the PC doesnt notice that the DFU device has been removed and that the board is now a Serial device.
To get around this problem, Leaflabs added a small circuit, that pulls one of the USB lines high, which the host PC notices, and the PC checks what device is now connected .
If you look at the Serial branch of the Maple bootloader, I linked to earlier in this thread, This version of the bootloader always stays as a serial device, so technically, there is no need to reset the USB bus to signal a change of device to the PC , when the code in the sketch runs.
But... My experience with trying serial USB on generic boards has highlighted things are unlikely to be plain sailing, and as BobC has said, its very very hard to produce good bootloaders.
I will make a separate folder with the Maple Serial bootloader, from the Serial bootloader branch, so that we have some code for people to work with, if they feel like playing with it.
I will also post instructions on how to compile the bootloader under Windows as to use Make you need to install MinGW.
You can of course use CooCox or Em::Blocks to compile the bootloader, but Im not sure I will have time to setup an Em:Blocks project