Allow ignoring any function results

This adjusts the parser to not only allow ignoring integer function
results (i.e. calling such functions as if they were subs, without using
the result value in any expression, and without assigning it to any
variable), but also all other data types.

For integer types it uses the same trick as before: setting the CALL's
dtype to VOID, so "the emitter won't allocate a result".

This also works for UDT results. If returned in registers, that can just be
ignored like integers. If returns through a temp var on stack, the result
pointer returned in register can also just be ignored, and the temp var
will be destructed if needed, otherwise remain unused.

For STRING/WSTRING results, fb_StrDelete() will be called immediately on
the result.

For float results returned in st(0) on the FPU stack, the ASM backend will
now emit a "fstp st(0)" instruction to ignore the result and pop it from
the FPU stack (idea taken from gcc).

For float results returned in xmm0 (SSE mode), it can just be ignored,
I think, like any others returned in registers.

This feature seems useful in some cases, for example when using functions
that return error codes through UDTs (e.g. libxcb). It has been requested
repeatedly on the forums. C allows this to be done aswell.

Since this doesn't change the way anything is parsed (just whether
function calls with unused result are reported as error or not), there
shouldn't be any syntax ambiguities arising from this, but of course it
allows some strange code to work, for example:
	hex( 5 )