Quicker partial collection by using card marking.

Add calls to the card marking from the write barrier routines, so that
a write to an Object marks the appropriate card. Add code in the GC to
use and rebuild the cards at a partial GC, clearing cards in the
Zygote heap which do not in fact contain references to the application
heap.

Change-Id: Ie6f29fd096e029f48085715b282b6db8a7122555
diff --git a/vm/alloc/HeapBitmap.h b/vm/alloc/HeapBitmap.h
index fd35858..5b1ed95 100644
--- a/vm/alloc/HeapBitmap.h
+++ b/vm/alloc/HeapBitmap.h
@@ -50,7 +50,7 @@
     static inline p
 
 
-typedef struct {
+struct HeapBitmap {
     /* The bitmap data, which points to an mmap()ed area of zeroed
      * anonymous memory.
      */
@@ -77,7 +77,8 @@
      * to a set bit.  If there are no bits set, (max < base).
      */
     uintptr_t max;
-} HeapBitmap;
+};
+typedef struct HeapBitmap HeapBitmap;
 
 
 /*