Add option for changing number of GC threads.

The number of threads was previously set to 1 by an accidential
checkin. This hurts on all devices which aren't dual core. We now
properly use sysconf to determine how many threads we should create.

Also added a -XX:HeapGCThreads heap option which lets us change
how many GC threads we create. The default value is equal to the
number of processors on the device minus one.

Change-Id: If65065ef09174a3813b8741efdd5ea7bbe82a4e2
diff --git a/runtime/gc/heap.h b/runtime/gc/heap.h
index 33b7601..b64fdc0 100644
--- a/runtime/gc/heap.h
+++ b/runtime/gc/heap.h
@@ -136,7 +136,8 @@
   // ImageWriter output.
   explicit Heap(size_t initial_size, size_t growth_limit, size_t min_free,
                 size_t max_free, double target_utilization, size_t capacity,
-                const std::string& original_image_file_name, bool concurrent_gc);
+                const std::string& original_image_file_name, bool concurrent_gc,
+                size_t num_gc_threads);
 
   ~Heap();
 
@@ -489,6 +490,9 @@
   // false for stop-the-world mark sweep.
   const bool concurrent_gc_;
 
+  // How many GC threads we may use for garbage collection.
+  const bool num_gc_threads_;
+
   // If we have a zygote space.
   bool have_zygote_space_;