C backend: Ensure to reset expression tree when emitting multiple modules
astNewASSIGN(): Access VAR.sym, not CONV.sym

CONV nodes don't store symbols, i.e. CONV.sym is just NULL,
the VAR nodes sym field should be used here,
to avoid passing a NULL basesym to astTypeIniFlush().
test for new string functionality in IIF
start of allowing strings in IIF
update changelog regarding strings in IIF
add a couple more tests for IIF with strings
docs: wiki backup
Merge remote-tracking branch 'origin/master'
Remove unnecessary code from hFloatToStr()

The special INF/NAN handling isn't needed anymore, now that all floats
are emitted in raw hex form anyways...
ASM backend: Fix hFindFreeReg() to really return INVALID on failure (#628)
ASM backend: Fix possible faulty "pop eax" in longint shift code

The two <if( preserveeax ) then : hPOP( "eax" )> checks could be reached
by code paths that didn't set preserveeax. Since it's a static var,
it could depend on a previous run of that function, which could cause
a "pop eax" to be emitted without corresponding push.
ASM backend: Don't trash regs needed for dest in longint shifts
CRT headers: Change rename_() to rename(), ok since 60cce57f
win32 headers: Add initguid.bi
rtlArrayClear(): Don't check ctor if it's not going to be used
rtlib: Clean up fb_ArrayClear/fb_ArrayErase

- added fb_ArrayDestruct*, split off from fb_ArrayErase
- removed isvarlen parameters from fb_ArrayErase() and fb_ArrayClear(),
  fb_ArrayDestructStr() will be called instead now
- cleaned up compiler's rtlArrayClear() and rtlArrayErase()
rtlib fb_ArrayClearObj(): Don't clear if ctor exists, ctor should do it
Fix #626: Missing visibility checks for calls to NEW/DELETE overloads
Fix union/derived UDT initialization

UDT initializers rely on symbGetUDTFirstElm() and symbGetUDTNextElm()
to walk the UDT's fields, to initialize one after another. Unions require
special care, because it only makes sense to initialize one element of
the union, and thus the compiler should only allow initializing the first
field of a union, as in C (at least, when using unnamed initializers).

- symbGetUDTNextElm() did sometimes handle unions incorrectly,
  causing the UDT initialization parser to do wrong things.

  The following compiled fine but should result in an error (x.a is first
  set to 1, then x.b is set to 2, but it's a union so this should be
  disallowed):

	union UDT
		a as integer
		type
			b as integer
		end type
	end union

	dim as UDT x = ( 1, 2 )
	print x.a, x.b

  Another example that shouldn't compile ok (x.a and x.b set to 2,
  x.c left uninitialized):

	union UDT
		a as integer
		type
			b as integer
			c as integer
		end type
	end union

	dim as UDT x = ( 1, 2 )
	print x.a, x.b, x.c

- symbGetUDTNextElm() also had problems with UDTs with non-field members,
  e.g. method procedures, but also the NSIMPORT symbols used to import
  the base namespace into derived UDTs. This caused derived UDT
  initialization to break, as seen in bug #609. (A test case for this
  is now in tests/dim/udt-init.bas)

Changes with this patch:
- symbGetUDTFirstElm() is now symbUdtGetFirstField()
- symbGetUDTNextElm() is now symbUdtGetNextField()
  This is used to cycle through all fields, without handling unions
  specially. It's used by LET, the C backend, and others, and actually
  feels wrong, but if needed it can be fixed later.
- symbGetUDTNextElm( , TRUE ) is now symbUdtGetNextInitableField()
  This is used to cycle though all "initializable" fields, i.e. unions
  are handled specially. This is used by the UDT initializer parsing.
  symbUdtGetNextInitableField() is rewritten from scratch.
- FBSYMBOL.udt.elements field and symbGetUDTElements() removed,
  the above cycling functions are now used instead. This is easier for
  the UDT initializer parser. The elements count contained all fields,
  even "uninitializable" ones from unions, it seems good to require
  callers to make this choice explicitly by deciding between the two
  symbUdtGetNext*Field() functions.
symbDump(): Recognize unions