[ELF] Separate implementation from the class declaration.

ELFFile would be a class that rest of the targets would derive from.
To keep the implementation clean, separate the implementation from
rest of the Header file.

git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@200168 91177308-0d34-0410-b5e6-96231b3b80d8
[ELF] Unify interfaces between DynamicFile/ELFFile.

git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@200172 91177308-0d34-0410-b5e6-96231b3b80d8
[ELF] Separate ELFReader classes for subclassing

git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@200173 91177308-0d34-0410-b5e6-96231b3b80d8