added gpu.c and header

the main(only) sdl surface * is part of struct gb just like the cpu
mem and mbc. trying to focus on keeping things clean and reducing clutter.
trying to only include extra headers when completely necessary; most
c files only include globals.h and their associated header and globals.h
only includes sdl.h. also added palette arrays. made a few changes to  debug.c
to show help if argc is less than expected. read_byte and read_word are
still macros and they'll probably stay that way. write_byte/cart are
looking pretty empty right now, but it's just a matter of reading documentation
and implementing it(which 'should' be easy).after each opcode is read,
emulate() prints out the values of all the registers and the value
of mem.map at the address PC points to.also there is no getchar() after it
so it prints a lot of stuff right now.