FEAT: Add Carls implementation of serial scheme
FEAT: Windows Serial Implementation and extension of serial functionality

Squashed from several commits:

FEAT: add serial union to REBREQ

FEAT: Allow multiple serial ports

FIX dev-serial local functions to static

FEAT: Minimal Win32 Serial Interface

STYLE: Change serial path to REBCHR type across all platforms

FIX: PR Comments

FIX: Windows writeFile call
Move dev-serial.c from posix to linux
Fix the poor performance in network writing

The poor performance is hit when there is only one active port with a
big packet (> 64k bytes) to write. The network driver will split the
packet into 32k chunks, and only send the first chunk before returning
RD_PEND. When N_wait checks for signals from this port, it sees no
signal (write is not done yet), and thus the wait time is doubled, and
OS_Wait is called.

In OS_Wait, default Poll_Default is called, which goes through all
pending requests for the device. Because the packet is so big, after a
second "write", the packet is still not sent completely, and the status
remains the same: DR_PEND, which causes Poll_Default mistakenly thinks
the device is inactive, and then OS_Wait starts waiting with the doubled
wait time. The wait time could get doubled further until its max if the
packet is quite big.

The fix is in two folds:
1. Introduce a new flag RRF_ACTIVE, to mark the request as active in
case that partial data is written
2. Modify Poll_Default funcntion to check RRF_ACTIVE in
addition to the current DR_DONE/DR_ERROR.

So when the data is partial written, Poll_Default will return "TRUE",
which causes OS_Wait to return immediately, no matter how long the "wait
time" is.
[Makefile] update for serial support
Fix communication in serial port

The original port actions assumed reading/writing was synchronous
Take absolute path for serial port as well

Hard coding part of the path in the interpreter doesn't seem to be a
good idea
Merge branch 'net-poll' into serial-new
Mark port as active when writing is partially done

This avoid poor writing performance in some cases
Do not crash on invalid parameters
More control over serial port

Now these parameters can be set:
speed: baud rate
data-bits: 5, 6, 7 or 8
stop-bits: 1 or 2
parity: 'odd, 'even or none
flow-control: 'hardware or 'software
Fix serials for win32

Only build tested
Merge branch 'atronix' into serial
Merge branch 'atronix' into serial
Merge branch 'atronix' into serial
Remove the redudant typedef
Increase MAX_INT_LEN to 21

-9223372036854775808 has a length of 21.
It worked, because Form_Int_Len did not correctly check "maxl"
Avoid integer overflow

val = -val will cause overflow when val = LLONG_MIN, and the result is
undefined. So the compiler could assume val != LLONG_MIN, and val will
always be positive after this:

if (val < 0) {
	val = -val;
}

So the later check if (n < 0) is ignored.

gcc -O2 uses this assumption, while gcc -O1 or clang doesn't.

Special case LLONG_MIN to avoid this overflow.
Correctly check length while writing to the buffer

break earlier when maxl bytes are written

maxl in Form_Int_Len includes the terminating "0", while max in
Form_Int_Pad does not. So fix it to avoid build time showing "??"
Merge branch 'serial' into atronix