Reclaim memory used by the boot code

To put it into one word: Provide what's in the MEMORY.

Don't compile in space for the IDT. That's dumb. Create the IDT in the first
4 KiB which were the BDA until we didn't need that anymore :-) Likewise, the
locations of other structures changed slightly to be consistent and at the
same time reduce the kernel image size (to less than 1/3 approximately).

This imposed _various_ changes to subtle problems and assumptions because
many places are overwritten by our data quite early. Everything seems to be
fine, though.

Note that there are no interrupt handlers available anymore because they
possibly got overwritten or anything. Initialisation goes without problems
but don't touch the keyboard :-)