Change intern table to unordered set.

Intern table active used bytes goes from 430k to 317k on system
server. Similar %wise savings on other apps.

Bug: 16238192

Change-Id: I92de72de3eae0b76629e9da83db2c2d0fa613052
diff --git a/runtime/gc_root.h b/runtime/gc_root.h
index b10a55c..3928f5d 100644
--- a/runtime/gc_root.h
+++ b/runtime/gc_root.h
@@ -28,6 +28,7 @@
  public:
   template<ReadBarrierOption kReadBarrierOption = kWithReadBarrier>
   ALWAYS_INLINE MirrorType* Read() SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+  ALWAYS_INLINE void Assign(MirrorType* value) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
 
   void VisitRoot(RootCallback* callback, void* arg, uint32_t thread_id, RootType root_type) {
     callback(reinterpret_cast<mirror::Object**>(&root_), arg, thread_id, root_type);