[Linux] Make sure memory is free'd

Memory could leak if output/error reading failed
[Makefile] Define _UNICODE for windows

This macro is needed as host-lib.c has some string related functions
from C runtime.

See http://blogs.msdn.com/b/oldnewthing/archive/2004/02/12/71851.aspx
for differences between UNICODE/_UNICODE
Make /output in CALL take string! instead of word!

This makes it in line with R2. In R2, if the string! is not empty, it
seems to insert the output to the string, which I doesn't feel natural.
So in R3, the output is appended to the string.
Take binary! for I/O redirection in CALL

The difference between string! and binary! is that, with string!, the
interpreter will try to do the encoding conversion before/after passing
in/out of the command; with binary!, no such conversion is done in the
interpter, everything will be passed in/out as-is. So if the conversion
is not desirable/correct, use binary! (and do the conversion yourself).
Accept file! to CALL
[Linux] Search PATH for executable

This makes it in line with Windows
[Linux] Update *len after reading

Or the data from last reading could be lost
[Linux] Detect failure of exec in child process

This makes CALL throw an error if exec fails
[Linux] Fix OS_Form_Error not filling the error string

GNU specific strerror_r (as _GNU_SOURCE is defined) might not fill
the provided buffer at all. So copy it to the buffer.
Accept an error num in Make_OS_Error

Such that not can only the last error be reported.
Differentiate error and exit code

Such that the error can be correctly thrown