Add a mode for concurrently marking and sweeping.

When enabled, the mutator threads will be resumed while tracing
proceeds from the roots.  After the trace completes the mutator
threads are suspended, the roots are remarked, and marked objects
are scanned for updates and re-marked.

There are two limitations to this implementation.  For the sake
of expediency, mutators are not permitted to allocate during the
concurrent marking phase.  This will be addressed in a subsequent
change.  As there is no write barrier, all objects, rather than
just those objects assigned to during the concurrent phase, are
scanned for updates.  This will be addressed after a write barrier
is implemented.

Change-Id: I82dba23b58a1cf985589ed21ec0cffb5ebf48aae
10 files changed