Optimized itoa() functions for binary and hex

The functions itoa_16() and itoa_2() are added to klib (in itoa.c).  In
addition to being optimized (using bitwise operations instead of
division/modulo), these functions correctly handle large numbers.  The
old itoa() function fails for numbers with bit 31 set.
Link kernel at 0xC0100000, simplify mem_init()

The kernel now runs at (virtual address) 0xC0100000.  The kernel is
still loaded at 0x00100000.  User-space programs are both linked and
loaded at 0x00200000.

mem_init() no longer reads the ELF section headers or multiboot memory
map in order to detect available memory.  This was more trouble than
it's worth.  Instead, it just reserves all memory from 0x0 up to the end
of user-space.