Added cross-compiler for x86_64.
Made build-system and directory organization ready for x86_64.

That is, now we have a target and a target-type to support
code-sharing of architectures that are similar. We also use that
to share the drivers code of eco32 and mmix.
Additionally, I replaced the usage of #ifdef with #if defined,
and we define __TARGET__ and __TGTTYPE__ now instead of using
the builtin defines.
Clean up startup.

Now we don't use the gdt-trick anymore, but setup paging right
away so that we don't need to deal with different "environments"
in the C++ code.
Additionally, we don't use the external trampoline anymore. Now
it's integrated into the kernel.S, so that we don't need nasm
anymore and can use common code easier.
I've also moved the memory-layout constants to mem/layout.h,
which enables us to include it in assembly files.
Fixed type errors.
Split the physical memory in two areas.

That is, now we have two stacks (besides the bitmap) for
managing the physical memory. One for the lower memory
and one for the upper memory. This way, we can directly
map the lower memory and use it for all paging structures,
which will greatly simplify the paging module.
Add forcepit automatically if kvm is used.
Redesigned paging for i586.

We don't put the page-directory in itself anymore, but walk
through the page-tables for all PTE accesses. This works because
we allocate all page-tables in the lower memory, which is
directly mapped, so that we can easily access all page-tables.
The new approach has the advantage that we don't need to to map
and unmap other page-directories in ourself all the time and
we probably be able to share a large portion of the code with
x86_64. Additionally, we only need a lock for the temp-page
now (per page-dir because we only have one temp-page now, not
a temp-map-area with several page tables). Everything else is
fine without because we already do locking in the modules
that call us.
Fixed alloc/free tracing in physmem.
log: don't force a newline at 80 columns.
Fixes for x86_64 compile.
Got rid of some assembly files.
Use ulong instead of uintX_t to be less arch-specific.
Moved more code from i586 to x86 and made it more general.
Changed the interface to paging.

Instead of passing an array of frame-numbers to map(), we have
an allocator class now. This is not only used for map(), but
also for unmap() and is responsible for allocating and freeing
pages and pagetables. We have different subclasses that
implement the different cases (user, kernel, kernel-stack,
no-alloc, range).
This gives us much more flexibility and simplifies it for some
usecases.
Removed PageDir::freeFrame.
Made paging more general.
Moved gdt to x86 and made it more general.
Init serial as early as possible.
Moved stuff in registers.h to a more generic arch.h.
Made interrupts/idt more generic.