Dispatch keys to a device specific key handler

Injects a device key handler into the input path to handle additional
keys (as found on some docks with a hardware keyboard).

Configurable via overlay settings config_deviceKeyHandlerLib and
config_deviceKeyHandlerClass.

Change-Id: I6678c89c7530fdb1d4d516ba4f1d2c9e30ce79a4

DeviceKeyHandle: The device should consume only known keys

When the device receive the key, only should consume it if the device
know about the key. Otherwise, the key must be handle by the active app.
Also make mDeviceKeyHandler private (is not useful outside this class)

Change-Id: I4b9ea57b802e8c8c88c8b93a63d510f5952b0700
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>

DeviceKeyHandler : Allow handling keyevents while screen off

Some devices require the keyevents to be processed while the screen
is off, this patchset addresses that by moving the filter up in the call
hierarchy.

Change-Id: If71beecc81aa5e453dcd08aba72b7bea5c210590
Support GESTURE_SENSOR input device type with GestureService

* The GESTURE_SENSOR input device type is meant to support touch sensors
  which are meant for gesture input only, very similar to a touchpad,
  but without the pointer capability.
* Define separate service to handle gestures from GESTURE_SENSOR device
  type.

Change-Id: I9b273df2a3cc141774d7f7cd81e43a90ea5b230b

Hide InputDevice.SOURCE_GESTURE_SENSOR from API

Change-Id: If009e9595fc593594b0e7764669996de137483a1

GestureInput : Allow doubletap/longpress configuration

Allows devices to specify pending intents for double tap and
long press events.

Change-Id: I7e7cc2f9f96a01d8f6232e5cf0e19832fdfd5359
Proper supplementary service notification handling (1/5).

Remove CAF's passing of implementation details from the base classes,
and replace it by well-defined call properties.

Change-Id: I4fa94d4ba68a1570d3f822be569ae124882c0e66