[CORE] Build vmm_vserial as module

There is no reason why we cannot disable vmm_vserial or build it as
loadable .xo module.

This patch modularizes vmm_vserial and moves it to core/vio directory
from core/ directory.

In future, we will add virtual input (i.e. virtual keyboard or mouse)
and virtual display frameworks to core/vio directory. This directory
is meant to hold Xvisor centric virtual IO frameworks.

Signed-off-by: Anup Patel <anup@brainfault.org>
[TOP] Add support for linking binary data files to final ELF

Having ability to link binary data files (or binary blobs) to the final
Xvisor ELF can be very helpful for upcoming virtualization frameworks,
drivers, and emulators. As an example, various language based keyboard
layouts (which are purely text data files) will be required for emulating
virtual keyboards.

This patch adds support for converting .data file to .o file and linking
it to final Xvisor ELF. The linked binary file can be accessed directly
from .c or .S files with deterministic link-time symbols.

For example, <xvisor_source>/core/xyz-123.bin.data file will be linked
to Xvisor ELF as <xvisor_build>/core/xyz-123.bin.o file and the contents
can be accessed using:
(Start symbol) _binary_core_xyz_123_data_start
(End symbol)   _binary_core_xyz_123_data_end
(Total size)   _binary_core_xyz_123_data_size

The constraints in above described mechanism of linking binary data files
to Xvisor ELF are:
1. If a binary data file has extension different from .data then we need
to explicitly append .data extension to file name.
2. The binary data file has to present in the Xvisor source directory and
not in the Xvisor build directory.

For now, the above constraints seems reasonable enough.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] vio: Export symbols for vmm_vserial module

We have to export global symbols for vmm_vserial module. This was
missed out in previous patch which made vmm_vserial as module.

Signed-off-by: Anup Patel <anup@brainfault.org>
[LIBS] stringlib: Add strstr() API

This patch adds substring search API to stringlib.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] vio: Add vmm_keymaps APIs

This patch adapts QEMU keymap APIs so that we can now convert
key press events from VNC or GUI daemons into intermediate scancodes.

Further, these intermediate scancodes will be used in keyboard and
mouse emulators for emulating keyboard/mouse events for Guest.

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