[CORE] vio: Introduce virtual input device framework

This patch adds first-cut implementation of virtual input device
framework. Emulators can use this framework to create virtual keyboard
and virtual mouse instances. Daemons such as VNC server, GUI renderer,
etc can use this framework to inject keyboard events and mouse events
to virtual keyboard and virtual mouse intances.

Signed-off-by: Anup Patel <anup@brainfault.org>