Implement FINAL/OVERRIDE for clang.

Separate declaration from definition in certain places to work-around issues
with clang.
Remove bogus lock annotation at definition in compilers.cc that is already
present at the declaration.
Remove duplicate definition of ClassReference.

Change-Id: I5368057bb36319a259110b2198610d9d2b2e5041
diff --git a/compiler/compilers.cc b/compiler/compilers.cc
index 9bb1719..f58b38b 100644
--- a/compiler/compilers.cc
+++ b/compiler/compilers.cc
@@ -91,8 +91,7 @@
                             OatWriter* oat_writer,
                             const std::vector<const art::DexFile*>& dex_files,
                             const std::string& android_root,
-                            bool is_host, const CompilerDriver& driver) const
-  SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
+                            bool is_host, const CompilerDriver& driver) const {
   return art::ElfWriterQuick::Create(file, oat_writer, dex_files, android_root, is_host, driver);
 }