Great idea. I have some suggestions...
#define __BOARD_Duemilanove_
#define __BOARD_MEGA__
The vendor name should be included in the #define to avoid conflicts...
#define __BOARD_ARDUINO_DUEMILANOVE__
#define __BOARD_ARDUIN0_MEGA__
#define __BOARD_ADAFRUIT_BOARDUINO__
There are a few cases where knowing the revision of the board would be handy. I suggest setting the #define to the board revision level...
#define __BOARD_ARDUINO_DUEMILANOVE__ 1
#define __BOARD_ARDUINO_MEGA__ 1
#define __BOARD_ADAFRUIT_BOARDUINO__ 1
I propose putting this define in pins_arduino.h since the pin numbering is the place where this is most likely to have a difference
These should be taken from boards.txt and passed to the compiler by the IDE.