Factor File::addAtom out to MutableFile::addAtom.

This removes a bunch of llvm_unreachables and makes a File's mutability part of the type system.

llvm-svn: 172297
diff --git a/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp b/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
index 93dcf21..a899585 100644
--- a/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
+++ b/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
@@ -614,10 +614,7 @@
     const lld::File *denormalize(IO &io) {
       return this;
     }
-    
-    virtual void addAtom(const lld::Atom&) {
-      llvm_unreachable("cannot add atoms to yaml .o files");
-    }
+
     virtual const atom_collection<lld::DefinedAtom> &defined() const {
       return _noDefinedAtoms;
     }
@@ -672,11 +669,7 @@
         _absoluteAtoms.push_back(a);
     }
     const lld::File *denormalize(IO &io); 
- 
-  
-    virtual void addAtom(const lld::Atom&) {
-      llvm_unreachable("cannot add atoms to yaml .o files");
-    }
+
     virtual const atom_collection<lld::DefinedAtom> &defined() const {
       return _definedAtoms;
     }