Actually report the device info.

The device info was added to the reply structure but the report size
returned to vUSB was still 4. Use sizeof() for that.
Some renaming to prep for upgrade integration.

The upgrade utility needs to be integrated into the bootloader build so that
multiple targets can benefit from it. But then some file names are no longer
that meaningful and some make variables needed renaming.

No functional change.
Integrate upgrade build with the bootloader.

Having different targets makes keeping the bootloader address (and maybe other
info) in sync between upgrader and bootloader somewhat problematic. This change
integrates the upgrade firmware utility into the bootloader build.

As a result, this makes a suitabe upgrade utility available for each supported
platform.

This also makes the upgrade utility work with this new bootloader version and
especially with newer binutils/gcc versions.

Details:

Binutils and GCC troubles
.........................

The previous attempts to align the uploader suitably did no longer work. The
idea was to move everything after the vector table two flash pages up, so that
the vector table could safely be replaced.

But at least with newer avr-ld versions (and the according default linker
scripts), any PROGMEM data is inserted just behind the vector table and before
the ".init0" section, hence inserting NOPs into ".init0" just did no longer
work.

This has been fixed by providing a special linker script that aligns the section
after the vector table to a 128 byte (2 flash pages) boundary.

Inserting the bootloader image into the upgrade firmware
........................................................

This was previously done by a ruby program that read the bootloader hex file
and turned that into a C file which declared that as an array in program
memory. But since we need a special linker script anyways, this can be done
more elegantly and without additional utilities.

Injecting the bootloader image now works this way:

* a raw binary image of the bootloader is generated. This works almost the same
  way as writing a normal ".hex" file, except for the output format.

* this raw image is inserted into the "upoader.o" object file as section ".payload"

* when finally linking the uploader, references to the payloads start and end
  addresses are resolved and replaced, just in the same way as any other symbol
  that is only accessible at link time.

* when producing the ".hex" image for the bootloader, the ".payload" section is
  included in the output.

Bootloader alignment
....................

Since the tiny table is now accounted as part of the bootloader, its address is
no longer aligned to a page boundary. But "write_new_bootloader()" did not
support that and needed a rewrite.

Bootloader vector table forwarding
..................................

The issue is, it does not have one anymore. But the bootloader will fix the vector
table once it ran for the first time, so it is not really necessary to manipulate
all vectors - replacing the reset vector is enough.

The remaining vectors are now kept intact, meaning they will point to "__bad_interrupt",
which will re-start the upgrade utility if any unexpected interrupt happens.

Signaling
.........

The "beep" stuff has been removed.

We cannot generally assume that some pins are available, we can only make
assumptions  about the pins used for vUSB (and then only in the context of the
bootloader and the upgrade utility).

Since many devices have a LED that can be controlled by the mcu (often the only
debugging aid), hardware secific stuff could provide an interface to such.
Two bootloader fixes.

* "eraseApplication()" did erase parts of the bootloader
  That function did assume that the bootoader is alligned on a page boundary.
  But it is not, leading to the address wrapped around and the bootloader
  attempt to erase itself (Ouch).

* bootloader entry address calculation was wrong.
  The tiny table size is defined as bytes, not words. The error was introduced
  by the recent removal of the jump to bootloader init as first element in the
  tiny table.