Added string-splitting function

Added comments to read_cmdline_tag()
Added NULL = 0 to global_defs.h
So this is a really really simple testing framework. Basically we take a set of boolean tests, and our run_tests function evaluates them and prints the result. Right now though none of this is useful because I still need to figure out how to malloc space for the test structs without using the c library. I'm thinking the best way to implement this would be through command line arguments, so we can boot the kernel in testing mode and have it run certain tests we specify. Anyone should feel free to jump in and fix this thing if they like, my code is bad, remove as you like :)
Minor fixes to argparse

Added function header for split_string()
Used mem_alloc instead of malloc in split_string()
Merge branch 'test_framework' of https://github.com/rellermeyer/course_os into argparse
Started work on running tests from qemu command line

Started code to run tests from command line argumens
Minor formatting and comments
Merged klibc into argparse
Accidentally deleted a function from uart.c

Also added a os_printf to argparse.c
Merge branch 'memory_management' of https://github.com/rellermeyer/course_os into argparse

Conflicts:
	kernel/Makefile
More work on getting tests to run via qemu command line

Added more objects to Makefile
Used os_printf instead of printf
Added number_of_words()

Added number_of_words() to determine the number of whitespace-delimited words
in a String
Used number_of_words() for argument parsing in start.c
Minor formatting and added comments
Merge branch 'master' of https://github.com/rellermeyer/course_os into argparse
took out extra variablesand prints
Fully implemented pcb save/load of registers
clean up update log
added some error checking to save and load state;

also edited make file because we no longer need course_os.img"
Merged process_abstraction into argparse and resolved conflicts

Conflicts:
	kernel/Makefile
	kernel/start.c
Initial work on testing process loading and running via qemu arguments

Started a argument-parsing case for testing a process load and run
Fixed compiler warnings by casting pointers
Edited comments
debugging offset bug: with +KERNSTART for unmapp
no abort while zeroing entry
returns from mem_alloc
pt entries remain unchanged tho (not unmapped)
debugging offset bug: w/o +KERNSTART for unmap
no abort while zeroing entries
allocates correct block in mem_alloc but aborts while returning
entries zeroed out correctly
abort doesn't find handler and branches to prefect loaction but still can't find handler
debugging offset bug: w/o offset using phys pt addr -> ditto as vpt