Statically initialize GDT and TSS

There is no reason these need to be initialized dynamically.  Also, the
set_descriptor() function is replaced by the SEG() macro, which is used
for both static and dynamic initilization of gdt_entry structures.
Load user space programs in memory above kernel

User space programs are now loaded at 2MB, which should be above the
kernel at least for the forseeable future.  Ideally they would be loaded
immediately after the kernel but I could not find any easy way to get
this behaviour out of ld.

Additionally, user space programs are now archived in bin/userspace.a.
This is to make the linker script a little simpler.