logd: fix various clang-tidy issues

In order of severity:
1) Add a CHECK() that a pointer is not nullptr, where the analyzer
   believes this is possible.
2) Add `final` appropriately to functions called from constructors.
3) Add missing cloexec flags.
4) Add missing `noexcept` and other subtle performance warnings

Test: build with clang-tidy
Change-Id: Ifd9a1299a51027a47382926b2224748b5750d6cf
diff --git a/logd/SerializedFlushToState.cpp b/logd/SerializedFlushToState.cpp
index 17ecb6d..6e2e8b0 100644
--- a/logd/SerializedFlushToState.cpp
+++ b/logd/SerializedFlushToState.cpp
@@ -60,7 +60,7 @@
     }
     log_position.read_offset = read_offset;
 
-    log_positions_[log_id].emplace(std::move(log_position));
+    log_positions_[log_id].emplace(log_position);
 }
 
 void SerializedFlushToState::AddMinHeapEntry(log_id_t log_id) {
@@ -149,7 +149,7 @@
         min_heap_.pop();
     }
     for (auto&& element : old_elements) {
-        min_heap_.emplace(std::move(element));
+        min_heap_.emplace(element);
     }
 
     // Finally set logs_needed_from_next_position_, so CheckForNewLogs() will re-create the