lex.bi: two different LEXCHECK enums had the same value
Merge remote-tracking branch 'origin/master'
Add support for CINT<n>( ) / CUINT<n>( )
Add support for CVI<n> / MKI<n>
astBuildVarField(): Ensure the final expression uses the field's dtype
ast: Let astNewFIELD() derive the dtype automatically
ast: Re-add preservation of FIELD nodes except bitfields

This partially reverts bfeb1284 and 25baeba3, which overhauled the bitfield
updating process and ended up changing astOptimizeTree() such that it
would always prune all FIELD nodes.

FIELD nodes are used to wrap field accesses which in turn allows the
compiler to identify bitfield accesses later. So FIELDs are essentially
only needed for bitfields at the moment, and perhaps not even for them;
in theory checking for FB_DATATYPE_BITFIELD should be enough.

But nevertheless, there are good reasons to preserve FIELD nodes:

- removing them is pretty slow; every node in expression trees given to
  astAdd() was visited by the FIELD removal pass, and that's on top of the
  normal astOptimizeTree() passes which already do a lot of recursive tree
  walking, so it slowed down the compiler.

- astProcVectorize() handles FIELD nodes (I don't know whether they're
  needed in any way, but they're at least supported), and it runs after
  the individual astAdd()s

- the C and LLVM backends could benefit from having a higher level
  representation of field accesses. Maybe, with FIELD nodes preserved,
  the C backend could emit
     udtvar.myfield
  instead of
     *((ubyte*)&udtvar + myfieldoffset)
  like the ASM backend.
  (similar for the LLVM backend -- it could use getelementptr instructions)

This patch removes the FIELD removal pass from astOptimizeTree(), and moves
the bitfield updating into a new astUpdateBitfields() function that's
called from astAdd() before astOptimizeTree().

Additionally an ast.bitfieldcount is added (which is similar to the
ast.typeinicount), used to count bitfield FIELDs in trees about to be
given to astAdd(). While this count is zero, astUpdateBitfields() doesn't
have to do a thing, thus we avoid a lot of unecessary recursive tree
walking. (this the same thing astTypeIniUpdate() is doing for TYPEINIs)
symb: Remove symbAddVar() (almost unused)
symb: Rename symbAddVarEx() -> symbAddVar()
ast: Fix astSetType() vs. TYPEINI assert()
iif(): Call astTypeIniUpdate() for true/false and fix up temp dtor calls

astTypeIniUpdate() can allocate temp vars, thus it's important that iif()
calls it for the true/false expressions. Any temp var from the true/false
expressions must only appear on the true/false code paths.

Otherwise, the astTypeIniUpdate() from astAdd() would allocate the temp
vars, causing them to be constructed before the whole statement, and
destructed at the end of the whole statement -- not just before/after the
true/false code paths respectively.
iif(): Fix bad temp var dtor calls for ctorcalls in true/false expressions

Similar to the previous commit -- astBuildImplicitCtorCallEx() may build
a CALL whose ARGs can create temp vars (e.g. when passing an integer
constant to a BYREF param). Thus astDtorListScopeBegin/End() calls are
needed around any code that can modify the true/false expressions...
ast: Delete dtor list entries when deleting an expression

This fixes the same issue seen in b5129f76, only in a more generic way,
so the issue is not only fixed for sizeof/typeof, but also for other cases
where expressions will be deleted by the compiler, for example the UDT
expression used in static member accesses (since it's a static member,
the instance expression isn't needed).
astBuildBranch(): Call astTypeIniUpdate() for the condition expression

Same problem as in 88a63962
astBuildBranch(): Optimize branch also if it's nested in LINKs

(which can happen e.g. due to the astTypeIniUpdate() added in the previous
commit)
win32 gfxlib2: Use WM_GETMINMAXINFO to prevent window size truncation

http://www.freebasic.net/forum/viewtopic.php?f=3&t=20770
parser: Allow member access/string indexing directly on iif() and type()

This makes it nicer to access the results of these expressions, by allowing
member accessing directly, without the need to wrap iif() or type() in
extra parentheses.
cInitializer(): Set context dtype to allow anonymous type() for ctor calls
Merge branch 'master' into 64bit

Conflicts:
	src/compiler/ast-misc.bas
Solve out hGetWstrNull() (one FB_INTEGERSIZE usage less)