Add InputReporter interface to InputDispatcher

This adds a new library to inputflinger, libinputreporter, that handles
events reported from InputDispatcher.

The CL makes InputDispatcher notify InputReporter for two events:
- Unhandled Keys: Keys that were not handled by the system or apps. A key
event is unhandled if:
   - The event was not handled and there is no fallback key; or
   - The event was not handled and it has a fallback key,
       but the fallback key was not handled.
- Dropped Keys: Key events can be dropped for several reasons, which
can be seen in InputReporter::DropReason.

Currently, the default implementation of InputReporter does nothing when
it recieves a dropped or unhandled key notification. The InputReporter
is created via its factory method, createInputReporter().

Bug: 119312287
Test: manual: Build, and verify using log output
Change-Id: I90ac525d648bb75e0bc8532f68f6a9e4ab51d54b
diff --git a/services/inputflinger/InputDispatcher.h b/services/inputflinger/InputDispatcher.h
index 05b5dad..7e6de6a 100644
--- a/services/inputflinger/InputDispatcher.h
+++ b/services/inputflinger/InputDispatcher.h
@@ -37,6 +37,7 @@
 #include <unordered_map>
 
 #include "InputListener.h"
+#include "InputReporter.h"
 
 
 namespace android {
@@ -1186,6 +1187,8 @@
     void traceInboundQueueLengthLocked();
     void traceOutboundQueueLengthLocked(const sp<Connection>& connection);
     void traceWaitQueueLengthLocked(const sp<Connection>& connection);
+
+    sp<InputReporter> mReporter;
 };
 
 /* Enqueues and dispatches input events, endlessly. */