Minor refactoring of ElfBuilder.

 * Nest section builder classes within the main builder
   class to reduce verbosity caused by templates.
 * Move .eh_frame and .eh_frame_hdr section headers earlier
   so that the section headers are sorted by file offset.
 * Do not emit PT_NULL header if .eh_frame_hdr is missing.

None of these changes should have any material impact.
This CL just prepares ground for the following CL.

Change-Id: I56f9825892adb01d413a18ca10cb5c805cb8cd78
diff --git a/oatdump/oatdump.cc b/oatdump/oatdump.cc
index f2e35af..e142742 100644
--- a/oatdump/oatdump.cc
+++ b/oatdump/oatdump.cc
@@ -269,7 +269,7 @@
         pretty_name = "[Dedup]" + pretty_name;
       }
 
-      ElfSymtabBuilder<ElfTypes32>* symtab = builder_->GetSymtabBuilder();
+      auto* symtab = builder_->GetSymtabBuilder();
 
       symtab->AddSymbol(pretty_name, &builder_->GetTextBuilder(),
           oat_method.GetCodeOffset() - oat_file_->GetOatHeader().GetExecutableOffset(),