dev_ns: adopt the input subsystem

Adds device namespace logic to the input subsystem to multiplex inputs events
between device namespaces (evdev, mousedev).

Keep track of the device namespace of clients, and deliver input events only to
those clients that belong to an active (foreground) namespace.  Thus, listeners
in background namespaces are oblivious to such input.

With evdev, input grab depends on the device namespace context. Only clients in
an active namespace can really grab an input, and from an active namespace, grab
operates as usual. From a background namespace, input grab is done virtually:
if no other clients in same namespace have the grab, the operation succeeds and
the client is marked as having the grab, but no action is taken. When another
namepace becomes active, grabs are swapped: current real grabs are undone and
instead become virtual, and virtual grabs are forced and become real.

  [ minor conflicts on Tegra merge in drivers/input/evdev.c -Jeremy ]

Changelog:
[16-Aug-2013] v1 - initial version

Change-Id: I05c361c8a7da4797cb21080a10077efa249e5f3a
Signed-off-by: Oren Laadan <orenl@cellrox.com>
Signed-off-by: Amir Goldstein <amir@cellrox.com>
Signed-off-by: Jeremy C. Andrus <jeremya@cs.columbia.edu>