Port Forward: Custom Hardware keys (1/2)

Framework changes to allow rebinding of the actions performed on the
following
key press events: Home long-press, menu press, menu long-press, search
press,
search long-press, app-switch press and app-switch long-press.

The available actions are: Nothing, open/close menu, recent apps
switcher,
search assistant, voice search and in-app search.

Patch Set 1: Initial port from ICS [done by Konstantin Koslowski]
Patch Set 2: Added 'assist' (search) key customisation
Option for ICS-style in-app search, in addition to
jellybean-style
search assistant.
Fixed double haptic feedback on virtual key press.
Patch Set 3: Checkbox to enable/disable all custom bindings.
Home long-press defaults to no action on devices with
an app-switch key.
Patch Set 4: The recent apps list will be preloaded on the initial down
press
of whichever key to which it is bound.
Patch Set 5: Fixed menu virtual key press sometimes performing the
custom
action bound to the menu key instead of just opening or
closing
the menu as it should.

Signed-off-by: htchoi1995 <htchoi1995@gmail.com>