Why not (finally) expose main.cpp to the user ?

So you replace

uno16.bootloader.file=optiboot_atmega328.hex

this file with the sketch file to use instead?