ART: Remove TODO in BitVector

Refactor the BitVector constructor: split it up to remove the
possibility to provide contradicting parameters, and add a custom
copying constructor.

Change-Id: Ie943f279baa007db578aea0f2f33fa93311612ee
diff --git a/runtime/base/bit_vector.h b/runtime/base/bit_vector.h
index afa8dc1..9b55e70 100644
--- a/runtime/base/bit_vector.h
+++ b/runtime/base/bit_vector.h
@@ -113,9 +113,16 @@
 
   BitVector(uint32_t start_bits,
             bool expandable,
+            Allocator* allocator);
+
+  BitVector(bool expandable,
             Allocator* allocator,
-            uint32_t storage_size = 0,
-            uint32_t* storage = nullptr);
+            uint32_t storage_size,
+            uint32_t* storage);
+
+  BitVector(const BitVector& src,
+            bool expandable,
+            Allocator* allocator);
 
   virtual ~BitVector();
 
@@ -245,6 +252,8 @@
 
   void Dump(std::ostream& os, const char* prefix) const;
 
+  Allocator* GetAllocator() const;
+
  private:
   /**
    * @brief Dump the bitvector into buffer in a 00101..01 format.