[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>
[COMMANDS] Add vinput command

This patch adds vinput command to interface with the virtual
input device framework from managment terminal.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] Minor typo-fix in vmm_delay

The "susbystem" should be "subsystem" in file comments.

Signed-off-by: Anup Patel <anup@brainfault.org>
[EMULATORS] gic: Fix comment referring original source

Point to correct reference source of QEMU for GIC emulator.

Signed-off-by: Anup Patel <anup@brainfault.org>
Merge remote-tracking branch 'upstream/master' into A20
[CORE] vio: Add inline functions to access emulator context

Currently, we directly accessed emulator private context of vserial,
vkeyboard, and vmouse which is not easy to maintain in long-term
hence this patch introduces inline accessor functions for this.

Signed-off-by: Anup Patel <anup@brainfault.org>
Merge remote-tracking branch 'upstream/master' into A20