Add -vgc switch

The following known allocations are intentionally not handled:

* AssertExp
* CmpExp
* AssignExp: Calls _d_arrayassign
* Hidden function errors: Are already deprecated
* SwitchErrorStatement

All these cases only allocate by throwing exceptions
and disallowing them would impact user code a lot. In
order to really solve such issues we need some way to
throw exceptions without GC-allocation.

Also not handled are indirect calls to user-defined
functions which may allocate (calling postblits in
array assignment for example). As this commit does
not provide a way to mark a function as @nogc there's
no way to know if such functions actually allocate.

These indirect calls to user defined functions must
be revisited when a @nogc attribute is introduced.
Merge pull request #1886 from jpf91/vgc

Implement nogc framework (warn about GC allocations)
Add test case for issue 12359 before deprecation
Fix import issues

- Add package table in each scope, due to check which package/module name is accessible via imports.
- Renamed/Selective imports no longer create aliases for the introduced names.
- Merge imports in base class members to derived class
Add "FIXME" comment for issue 10604 in ScopeDsymbol::search
Fix existing tests to fit improved import mechanism
fix Issue 313 - [module] Fully qualified names bypass private imports
fix Issue 314 - [module] Static, renamed, and selective imports are always public
fix Issue 8667 - selective import breaks normal overload resolution
fix Issue 10128 - import statement in base class members should be private by default
Fundamental fix for Issue 12201
fix Issue 12359 - implicit overload merging with selective/renamed imports should be removed

Show deprecation message for the implicitly merged overload set, by using cross-module overload set mechanism.
fix Issue 12399 - Static and selective import acts like a normal import
fix Issue 12400 - Misleading/useless diagnostic on bad fully-qualified symbol name