ini: Fix parsing of variable with spaces before the =

At least from what the source code suggests, a variable declaration in
the config file as this should be supported:
DFLAGS = -I/usr/include/d

But in reality, if you live spaces like that, the variable value will
get uppercased.

This commit fixes this problem to properly parse the extra spaces.
man: Mention variable names are converted to uppercase
ini: Add support to define undefined variables

Similarly to Make files, the syntax `VAR ?= value` is added to define
variables only when they were previously undefined.

In this case, if the environment variable `VAR` was undefined, then it
will be defined with the value `value`, otherwise the previous content
of `VAR` will be preserved.

This is useful to define default flags in the config file that can be
easily overridden by using environment variables.
Re-implement Statement::apply in terms of Visitor
Fix Issue 10221 - foreach(char c; 0..256) doesn't work even though the upper bound is 255
fix Issue 12008 - alias this and "unable to resolve forward reference" error
fix Issue 12010 - Undefined template symbols for static library linked with debug symbols

Struct destructors and postblits will be stored in TypeInfo. So, partial semantic3 running for structs declared in non-root modules should also consider them.
Merge pull request #3165 from 9rnsr/fix12010

[REG2.065a] Issue 12010 - Undefined template symbols for static library linked with debug symbols
properly C++ const class mangling
fix Issue 12016 - implicit immutable upcast becomes null in CTFE
Merge pull request #3168 from 9rnsr/fix12016

[REG2.065a] Issue 12016 - implicit immutable upcast becomes null in CTFE
fix Issue 12017 - DDoc leaves out the majority of documentation
Mangle long and ulong correctly on 64-bit linux/osx
explicit is_top_level initialization + additional tests

whitespace fix
Merge pull request #3169 from 9rnsr/fix12017

[REG2.065a] Issue 12017 - DDoc leaves out the majority of documentation
Merge pull request #3163 from 9rnsr/fix12008

[REG2.065a] Issue 12008 - alias this and "unable to resolve forward reference" error
Merge pull request #3158 from yebblies/longmangle

[DDMD] Mangle C++ long and ulong correctly on 64-bit linux/osx
Fix Issue 11991 - Implicit catch picks up wrong 'Throwable'
Merge pull request #3147 from yebblies/issue11991

Issue 11991 - Implicit catch picks up wrong 'Throwable'
[Refactoring] clean up Dsymbol::semantic