Proposal for a hardware id system.

We need two pieces of information, what chip we are dealing with and how is
that chip wired to the USB pins. The idea is to have a small number to identify
the chip and the wiring, so the hardware variation can be expressed as a single
word.

While there is theoretically a very large number of ways to wire the chip to the
USB pins, in practice there are only a few that actually make sense.

And while Atmel produces quite a number of different ATTiny variations, only a
relative small number have enough space to host a bootloader in the first
place.

This patch exposes both, a chip- and a wiring-ID to the upload utility. The
uploader should then select the correct firmware to upload.

To produce "chipid.h", I had a look at Atmels ATTiny page. The file includes
all ATTiny variations with at least 4k of flash, smaller device won't make
sense because the bootloader will occupy at least 2k flash by itself.

Different memory versions got different IDs. One reason is, that the different
memory versions of a chip may have rather different characteristics. The 167
for example has 4-byte interrupt vectors, while the 87 has only 2 bytes per
interrupt vector. Another example are the 4k variations, that have usually only
256 byte RAM, so one can use the small stack model on these devices.

Wiring- and Chip-ID default to 255.

Increas in size is 2 bytes to 2158 now.