Add EFI headers from GNU-EFI project.

From GNU-EFI commit 8f5ba0e4fd398d49c0004164d18e50fb6acd36ca
http://sourceforge.net/p/gnu-efi/code/ci/8f5ba0e4fd398d49c0004164d18e50fb6acd36ca/
Arch specific headers are moved into a arch directory and ia32 is called x86 in Haiku.
Removed files that is not needed.
Add EFI linker script for x86_64 from GNU-EFI project.

Original file is gnuefi/elf_x86_64.lds in GNU-EFI.
From GNU-EFI commit 8f5ba0e4fd398d49c0004164d18e50fb6acd36ca
http://sourceforge.net/p/gnu-efi/code/ci/8f5ba0e4fd398d49c0004164d18e50fb6acd36ca/
Add x86_64 EFI relocation function from GNU-EFI project.

Original file is gnuefi/reloc_x86_64.c  in GNU-EFI.

From GNU-EFI commit 8f5ba0e
http://sourceforge.net/p/gnu-efi/code/ci/8f5ba0e4fd398d49c0004164d18e50fb6acd36ca/
Renamed to relocation_func.cpp.

Use a generic filename for relocation function. The directory tells
what arch the function is for so we can use simpler logic in the
Jamfile.
Switch to .cpp ending as our boot/elf header uses C++ features.
Remove efilib header, use extern "C" block.

Removed #include <efilib.h> as we're stripping down GNU-EFI.
Added extern "C" block around _relocate function to avoid name mangling.
Whitespace cleanup.
Add x86_64 EFI start function from GNU-EFI project.

Original file is gnuefi/crt0-efi-x86_64.S  in GNU-EFI.

From GNU-EFI commit 8f5ba0e
http://sourceforge.net/p/gnu-efi/code/ci/8f5ba0e4fd398d49c0004164d18e50fb6acd36ca/
Rename to start_func.S

Use a generic filename for start function. The directory tells what arch
the function is for so we can use simpler logic in the Jamfile.
Working EFI application ('Hello World') and Jamfile.

First version of an EFI Application that actually runs.
The Jamfile is a still a bit of a hack, but builds with updated buildtools.

I currently build by adding
SubInclude HAIKU_TOP src system boot platform efi ;
to src/system/boot/Jamfile and running jam haiku.efi but that is just a
temporary hack.
There are still things to clean up in Jamfile, for instance haiku.efi is put
in the haiku directory atm. This is however first working version. To set up
QEMU to test haiku.efi see my docs in https://github.com/tqh/efi-example

Now it is 'just' the work of writing a bootloader left.
As I understand MakeLocateDebug should be used on haiku.efi

This causes haiku.efi to be built in the right directory.
Set bios_ia32 only if no other boot platform is set.

Only set bios_ia32 flags for x86_64 if boot platform is bios_ia32.
Use boot_loader_$(TARGET_BOOT_PLATFORM).ld naming for linker script.

As dictated in system/boot/Jamfile.
Added simple calloc implementation.

Needed for HashMap.
Don't use partition pointer as id, as it only works on 32bit platforms.

Use a counter to generate the partition id, and store the id to partition
lookup in a hashmap instead.
Fix, static variables get an 's' prefix.
Use memset in calloc, return NULL on size or numElements == 0.

Posix states 'If either numElements or size is 0, then either a null pointer or a
unique pointer value that can be successfully passed to free() shall be returned.'
Automatic whitespace cleanup, no functional change.
Only use 32 bit functions in boot on x86_64 if we are bios_ia32.
Stubbed EFI versions of headers platform_kernel_args.h and platform_stage2_args.h.
Add TARGET_BOOT_LINKFLAGS to LINKFLAGS in BootLD.

Consulted with Ingo on adding TARGET_BOOT_LINKFLAGS, and
this is 'probably' ok as x86_64 builds still build and runs.
Use variables correclyin the if, and use renamed variables in build.