Task 0 cleanups, code size reduction

Claim 768 bytes memory used for the stack of task 0 during startup.
This task has 1 Kbytes reserved for stack in its task-struct, but
instead used a memory space reserved in file arch/i86/boot/ctr0.S.

Cleans a bit the mess of conditional compilation statements in
file arch/i86/boot/ctr0.S.

Removes unneeded function redirect_main() in file kernel/printk.c.
See comments in file arch/i86/boot/crt0.S.

Code size gets reduced by 64 bytes and data reduced by 768 bytes.
File struct init unification, get_pipe_mem() improvements

Function get_empty_filp() now initializes some fields of file struct.
Previously, these initializations were repeated at several points in
the source tree: open.c, pipe.c, socket.c and exec.c.

Variable nr_files always equals NR_FILE. So, removed it and simplified
the code that uses it.

Function get_pipe_mem() uses a boolean array. Replaced it with a bitmap.

Code size was reduced by 112 bytes and data reduced by 20 bytes.
fork()/tswitch() bug fixes, task_struct init cleanup

System call fork() did not preserved user registers SI and DI
for the child task, and getting user register BP was unnecessa-
rily complex. The code was greatly simplified and assembly
function fake_save_regs() was completely removed.

Function tswitch() preserved registers BX and DX, but this is
not required by the calling conventions. The code was
simplified.

Initialization of struct task_struct was repeated at several
places in the source tree. Now, function find_empty_process()
does some initialization.

Code size was reduced by 128 bytes.
peek/poke fixups, unused variable cleanups

Some functions still used peek*/poke* to access userspace. Those
were replaced by architecture neutral get_user_*/put_user_*.

Unused functions peekd, pokeb, poked, get_bp, get_sp were removed.
Files for the first 3 functions remain in the source tree, together
with many other unused files. Unused variables "end" (in function
stack_check), "arch_segs", "marker" (in file sleepwake.c) and code
to initialize their never used contents was removed

Messages for printing startup errors were moved from init_task()
to a single print statement in function run_init_process().

Code size was reduced by 160 bytes and data reduced by 124 bytes.
Loop code cleanups, sys_execve() error handling bug fix

Transform "while" and "for" loops to "do {} while()" loops, when it
made cleaner code.

Cleaned handling of error in sys_execve().

Code size was reduces by 112 bytes.