Add enough locking to make the GRWL somewhat safe

Add some basic locking to:
- code generation (one lock for all of it)
- garbage collection (spin lock for allocations, global serialization for collections)
- lists (mutex per list object)

Can run the GRWL on some simple tests (microbenchmarks/thread_contention.py and thread_uncontended.py)
Performance is not great yet
Makefile cleanup

Make rules more general, and generate rules that can't be patterns
Made it easy to add a pyston_grwl target