Implement basic mark and sweep
Code clean up
Code cleanup
Add HeapMarkSweepTests
Add more test cases
Remove Heap.IsTemporaryPointer()