Fix partial lock fault. Avoid holding a lock on return;
Improve lock module importing and interfacing.

Moves lock specifications to their own tests/ folder in the src directory,
and re-aligns the code so that we don't have to pass pointers of locks
around as void *'s to pass the locks in and out (just keep them local to
where they are defined instead).
Add spinlocks.
Change the spinlock allocator -- too big for kmalloc