Implement the groundwork for predecessor/successor iterators on basic blocks.

Give BasicBlock a use/def list, making references to them in TerminatorInst's
into a type that maintains the list.

PiperOrigin-RevId: 206166388
diff --git a/lib/IR/Function.cpp b/lib/IR/Function.cpp
index 8476b06..b06be4d 100644
--- a/lib/IR/Function.cpp
+++ b/lib/IR/Function.cpp
@@ -108,6 +108,7 @@
   for (auto &bb : *this) {
     for (auto &inst : bb)
       inst.dropAllReferences();
+    bb.getTerminator()->dropAllReferences();
   }
 }