[EXPERIMENTAL] add gzip base framework

	SUMMARY
		At current, the downloadable ISO image does not
		include the downloadable iso image itself, as this
		would require infinite recursion.
		The solution to this is to instead read the ISO image
		using ATAPI and present that to downloaders. However,
		this image is a few megabytes and consists mostly of
		zeroes. Therefore, compression is needed.

		This commit adds the beginnings of gzip/zlib/DEFLATE
		compression. At current a gzip file is presented that
		decompresses to an empty file.

kernel/Makefile:
	record dependency to lib/gzip.s.

kernel/net/httpd.s:
	add handler to /D url calling gzip.

lib/gzip.s:
	partially implement the gzip wrapper for DEFLATE compression;
	add a simple implementation of LZ77 in the comments, to be implemented
	later in lib/deflate.s (to be created).
[untested] add more mutex/scheduling debugging.

	SUMMARY

		Add some debug prints for failed mutex locks and
		scheduling failures. The latter is introduced by
		a prior change where the PIC interrupts are not
		disabled (to allow for reboot packet reception),
		causing the debugger to be unresponsive to keypresses
		under certain fault conditions. The extra debug
		statements are meant to provide the desired information.

		This commit is untested in the sense that the error
		conditions have not occurred in the last few days,
		yet work is progressing, and these outstanding changes
		are cluttering the workspace.

kernel/debugger/export.s:
	stacktrace: also print the location where the stacktrace
	is printed. This _MAY_ result in duplicate entries for multilevel
	stacktraces although this has not been observed yet.

kernel/mutex.s:
	mutex_fail: print the mutex information and the process list
	in case the debugger is unresponsive.

kernel/net/net.s:
	remove the FIXME/TODO referring to potentially scheduling
	half-setup packets in the queue - this has been long since resolved.

kernel/schedule.s:
	schedule_task: when the scheduler is disabled, besides printing
	this, also print the name of the task attempted to be scheduled
	and the code address (and source/symbol).
	Note that schedule_task injects a new task into the scheduling
	queue, and does not refer to the main operations of the scheduler.
IGMP: implement/fix IGMPv3 messages.

kernel/net/cloudnet.s:
	set dh to igmp version as per api

kernel/net/igmp.s:
	add minimal summary of IGMP v1,2,3 message formats.
	add probable implementation for report max_response_code parsing
	and generation.

	add igmp V3 structures for membership report, which uses
	different packet layout, and igmpv3 group records.

	add net_igmp_checksum$ proxy to protocol_checksum.

	net_ipv4_igmp_print: add checks to distinguish v1,2,3.
	implement printing queryv3 and reportv3.

	net_igmp_send: have dh be igmp version (as this cannot be
	determined by the message type except for reportv3) and
	pad the message accordingly.
	calculate checksum after igmp packet has been constructed
	(ignore the checksum calculated by net_igmp_header_put).
	implement sending igmpv3 report.

kernel/net/net.s:
	add reference to RFC 1017 computing checksums.
	_some_ of the optimizations have already been implemented.
SHELL: env var fixes; CLOUD,OOFS: verbosity

	SUMMARY

		Reduce console printing for OOFS and CloudNet.
		Fix shell variable listing and setting (set would
		always update the first variable).

kernel/shell.s:
	export minimal environment variable api:
	shell_variable_set method,
	env_var_label and env_var_value struct fields.

	shell_variables_list: fix calculation of nr of env vars
	(was off by factor 1.5).

	shell_variable_set: FIX: add entry offset to list address.

kernel/net/cloudnet.s:
	on startup, register shell variable 'cloud.verbosity' to '1'.
	surround most print calls with verbosity checks using categorized
	constants. The default behaviour is rather minimal: print
	core network and FS initialisation and the period node count.

kernel/fs/fs_oofs.s:
	only print the volume descriptor when debug is enabled.

kernel/fs/oofs/*.s:
	oofs.s: declare OOFS_PRINT_TRACE initialized to 0
	*.s: only print the stacktrace if OOFS_PRINT_TRACE.
	oofs_table.s: add OOFS_TABLE_DEBUG initialized to 0 and
	only print the reference array in oofs_table_onload when it is true.
Debugger: disable IRQs again; minor fixes.

kernel/debugger/debugger.s:
	revert: disable IRQs except for keyboard.

kernel/net/igmp.s:
	fix calculation of igmp frame end.

kernel/schedule.s:
	cmd_ps$: fix stack restoration.
Update TODO.
WEBDOC: improvements.

util/doctools.pl:
	don't filter type (filename extension) by default;
	get_index now returns structure with depth information;
	process_index normalizes and records tree depth;
	add --tree option to print nested lists (with nice indents);
	merge genlinks_labels and genlinks_plain;
	remove empty lines;
	add support for structural labels in .index (with --tree);

util/txt2html.pl:
	translate '_' to ' ' in raw title;
	add [foo] tag, where foo does not contain '.', to refer to foo.html;
	remove "- title -" parsing;
	change "= title =" to set header level depending on '=' count;
	fix <dt><dd>: allow spaces (not just tabs) for dd, and parse
	elements beyond the first;
	escape code content;
	undo <pre> inside <dd>;
	replace escaped content with {{PACK $hex}} making sure that no
	further substitutions are done (such as [esp] in code).
	numerical lists: allow space indent instead of just tab;
	add [!note] tag;
	don't write TOC header unless there is TOC content and add
	class 'toc' to TOC <h2>;

DOC/MigratingTCP.txt: (ADD)
	describe how the DMZ node would redirect TCP connections based
	on HTTP requests.

DOC/.index:
	organize in a tree with group labels;

DOC/*.txt:
	layout fixes for txt2html.