Fix build on 64-bit Linux

DOC/GAS.txt:
	document 2.23 vs 2.22 behaviour, most notably treatment of .global.

Makefile:
	remove '=' after define to prevent infinite recursion on linux.

	add build-deps dependency to check for required build dependencies.

	clean: delete root/boot directory entirely instead of just build.img in it.

	define GCC compilation variable to treat sources as c99 regardless of
	file extension. This means that g++ is not required any longer.

bootloader/Makefile:
	remove paths to rm and as.
	add --32 argument to as to produce 32 bit elf targets on 64 bit systems.

fonts/Makefile:
	have gcc treat sources as c99.

kernel/Makefile:
	clean: remove path to rm and also delete kernel.dep.

	add --32 and -march=i486 (the latter optional) to as.

kernel/macros.s:
	remove macro .previous - as of binutils 2.23.something it is predefined.

kernel/mem.s:
	prefix [ramdisk_load_end] and [kernel_stack_top] with cs: since they are
	defined in the 16-bit data section which is in fact the .text section.

	prefix the [page_direcotry_phys(_end)]  with ds: to prevent the same
	compilation error 'invalid use of register'. Elsewhere in the code
	these variables are also referenced, but without error.
	I suspect the error is due to the macro use or the compile-time
	variable assignment

kernel/net/httpd.s:
	redefine the "kernel.size" expression's value to calculate the size
	by adding the code and data sizes. As of GAS 2.23, the calculation
	of length between two labels in different sections (.text and .data)
	results in an error.

kernel/print.s:
	remove .global declarations. See DOC/GAS.txt.

kernel/realmode.s:
	use .text16 instead of .previous.

kernel/sb.s:
	GAS 2.23 does not allow labels to begin with @@.

util/symtab.pl:
	objdump -t produces different output for ELF files than for PE files.
	The file format is checked, and it is converted to a pe-i386 copy which
	is then used to gather the symbols.

util/write.cpp:
	add some definitions that are missing in C (bool/true/false) and
	Linux (O_BINARY).

	Split the expression &++dirindex_index into two expressions since
	C does not recognize this as an LVALUE.