CrossRoads:
Thanks for that Lefty. Just a couple too many pieces to keep track of it seems. I guess I need to make a list of all the bits that need to be in sync.
I think there are only three key pieces that the IDE uses from the board.txt definitions to use when compiling and uploading:
Processor chip type (needed to compile sketches correctly for the target chip being used)
Clock speed of the target (so some arduino functions like timer setups work correctly)
Baudrate to use when uploading (so correct speed is passed on to AVRDUDE commands)
Lefty
Baudrate to use - so one has to know what the bootloader set it to.
Maybe the Serial downloader could be smartened up a little - try a simple command, kind of like AT on a modem, see if get ak OK back. Try a few speeds until a good answer comes back, then use that speed for programming.
Guess the bootloader would need matching code to reply with as well.
retrolefty:
I think there are only three key pieces that the IDE uses from the board.txt definitions to use when compiling and uploading:
And Protocol. So it knows to use stk500v2 for the Mega to handle the extra address space.
Yes that would be important too. 
I don't know if it's just me or not, but the arduino system sure seemed to be a lot simpler 3-4 years ago. 