RMCALL: let real mode DS,SS,ESP be settable in protected mode; rml_data_sel

These are read from structure on the stack. Pointer to this struct is
loaded to esi.
rml_data_sel was also moved to be addressed using esi.
RMCALL: instruction modifying esp removed due to next instruction loading it with new data
RMCALL: use 2B registers in .data16 context to address memory instead of 4B registers

It generates shorter instructions, there is no need for prefix 0x67 which
changes default 2B address operand to 4B operand in .data16 context.
There is counted correct DS:BX pointer for memory in/outs.

Jump to real mode must be addressed with 4B register, because the real mode
like data selectors are going to be kept 0 based and structure holding data
for jump could be wherever in the first 1MB, when the rest of the code gets
there.

bx must be used instead of ax after int call, because ax is not usable in
such an instruction as base register.
RMCALL: put actual switching function and interrupt setting to separate inline assembly

Interrupt instruction was replaced by 2B of code that woud be generated by
as utility, this seems more readable to me. The interrupt number itself is
set in the coppied code using C language.

Few comments updated.
RMCALL: pass registers to inline asm by memory instead of definition

if the position of struct passed should be settable by user, immediate
define would not work
easier readability - it is obvious what is passed in
RMCALL: pass direct location to inline assembler and allow memory constraint

this stores return pointer to protected mode
RMCALL: refactor parret to int_passed_regs_spot
RMCALL: fix input to output argument (inline asm) getting offset for int no
RMCALL: guards for header file
RMCALL: (multiple); defines of data areas replaced by variables

1. no need to define INT_REG_LEN - sizeof() used instead
2. REAL_MODE_SPOT set so that data for realmode are just before end of
   first 64kB of memory, stack grows down from this define now. Although
   stack size is set to 0x2000, it is not expected to grow all the way, but
   there is good reserve and it does not override the return code as it
   could while the stack was above the return code.
3. All real mode pointers stuff (code, data, stack) are solved in a way it
   is movable in the first MB of memory.
   But now it can be moved now only in the first 64kB of memory, because
   when loading 16-bit protected mode selector there is used base 0, so
   it needs to jump to first 64kB, because there is only ip used, not eip.
   Solution could be to leave those 24B before jumping to real mode cs:ip
   relocatable in first 64kB, the rest is relocatable in whole 1MB.
VBE_RM: simplified findModeByResolution

it is doing still the same thing, just with shorter code
VBE_RM: variable declarations moved to the top of the function findModeUsingEDID
VBE_RM: preset bpp to 0 in function findModeUsingEDID

this value is for function searching mode in modeList, searching function
then know it should not care about bpp and search using only resolution
VBE_RM: pass video parameters on cmdline

parameter --video=<resX>x<resY>-<bpp> parsing was added and it can be
passed to rtems binary on startup
 when selecting mode to use this option has the highest priority
 if not present or if parsing fails resolution from display's EDID
    structure is used
 if that also fails, mode with highest resolution and bpp is used

examples:
	--video=800x600
	--video=1280x1024-16

with qemu:
qemu -append "--video=1024x768" -kernel rtems.bin ...