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.
Fix Issue 10221 - foreach(char c; 0..256) doesn't work even though the upper bound is 255
Fix Issue 12051 - Wrong code with ?: resulting in char on x86-64
fix Issue 12047 - UDAs are not checked

This is also a refactoring change for UDA semantic analysis.

1. Run UDAs in semantic2 phase.
Currently forward reference resolution mechanism is not perfect. UDAs often depends on other declarations in user code. Therefore analysing them in semantic1 phase would easily hit fwdref issues.
On the other hand, if UDAs are not checked for conditional compilation, essentially they have no effect for final execution code. So, I think moving their analysis timing from semantic1 to semantic2 is not a problem.

2. Each Dsymbols now have a pointer to the enclosing UserAttributeDeclaration.
We can use UserAttributeDeclaration::scope for forward reference resolution of UDAs. So we can elide Dsymbol::userAttributesScope.
fix Issue 11824 - A stack variable escaping problem in CTFE Phobos code
Prevent multiple semantic running for statements
Move walkAllVars into a visitor class
Update gluestub.c
fix Issue 12070 - Variant opCall not static

If both constructor and opCall exist, `Type()` should be handled as literal syntax for default construction.
fix Issue 12080 - Internal error: backend/symbol.c 1035 for invariant
Move Type::toArgTypes into a visitor class
Merge pull request #3225 from 9rnsr/fix12080

[REG2.065a] Issue 12080 - Internal error: backend/symbol.c 1035 for invariant
Merge pull request #3221 from 9rnsr/fix12070

[REG2.065a] Issue 12070 - Variant opCall not static
Merge pull request #3204 from 9rnsr/fix11824

[REG2.065a] Issue 11824 - A stack variable escaping problem in CTFE Phobos code
Merge pull request #3183 from 9rnsr/fix12047

[REG2.065a] Issue 12047 - UDAs are not checked
Merge pull request #3076 from leandro-lucarella-sociomantic/cond-conf-vars2

ini: Add support to define undefined variables
fix Issue 11171 - text relocations in shared phobos library

- Read-only data with relocations cannot be added to CDATA,
  because text relocations are prohibited by many security
  checks (SELinux).
  Also text relocations effectively break sharing of
  read-only segments across multiple processes.
use .data.rel.ro segment for constant data with relocations

- The runtime linker will mark this as read only
  after relocations are processed.