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()